Так как программист я не настоящий, а запросы именно на редактирование кода поступают редко, то периодически сталкиваюсь с одними и теми же граблями. В силу непостоянности работы с кодом, помню, что ошибку уже видел, но как именно решать вспомнить не могу.
Пост не преследует цели кого-то чему-то научить или похвастаться навыками. Наоборот — это краткий сборник-напоминалка как не тупить в простых ситуациях. Что-то типа книжки Простые секреты разработки, только самописной про то, что важно мне. Если будет полезно кому-то ещё, я буду рад.
#1С
1. При создании внешней печатной формы проще всего выдернуть код стандартных обработок печати и, подставив СсылкаНаОбъект, продолжать редактировать уже его. В общем случае это работает, но иногда в модуле встречается обращение к процедурам, в котором передаётся значение глобальной переменной. Оно есть в исходном модуле, но его нет во внешней обработке. Это приводит к ошибкам вида:
Значение не является значением объектного типа (ПараметрыПрописиНаРусском)
Источник этой ошибки живёт в строке подобной такой:
ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего оказано услуг на сумму: " ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета);
В отладчике это место найдётся быстро, и мы сможем увидеть, что мВалютаРегламентированногоУчета имеет значение Неопределено. Чтобы победить достаточно включить в состав обработки строку:
мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
Конкретное наименование константы или другого источника данных надо смотреть по месту в конкретной конфигурации.
2. Все тот же вынос печатной формы в обработку. Всё хорошо в синтаксическом контроле, но при попытке напечатать форму ругается: Недостаточно фактических параметров! Ситуация осложняется тем, что даже в отладке нет ссылки на конкретное место, где этих параметров не хватает. В общем смысле такая ошибка говорит о том, что мы передаем вызов процедуры или функции с меньшим количеством обязательных параметров, чем прописано в самой функции. Или процедуре.
Поэтому стоит пройтись по всем подозрительным местам. Но для начала надо обратить внимание на первую функцию, скорее всего она начинается как-то так:
Функция Печать (ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
Тут надо определиться: либо мы где-то заранее определяем ИмяМакета или мы должны его сразу прописать в параметрах:
Функция Печать (ИмяМакета = "М2_печать", КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
Два следующих параметра необязательные, их можно не вписывать.
Бывает и наоборот: когда мы пытаемся передать параметров больше, чем принимает процедура или функция. Тогда мы увидим ошибку Слишком много фактических параметров.
3. Или вот ещё прекрасное: при входе в базу с ровного места начинает ругаться.
Ошибка SDBL:
Таблица или поле ConfigVersion не содержится в разделе FROM
В конфигуратор пускает, а в пользовательский режим — нет. Часто такая ошибка возникает когда базу сохранили из-под одной версии платформы, а потом загрузили под другой. Пока вы не потратили время на всевозможные тестирования базы, просто сохраните её в .dt средствами самой 1С, а потом загрузите обратно. Вероятнее всего ошибка уйдёт.
Комментариев нет:
Отправить комментарий