Имя: Пароль:
1C
1С v8
Розница: печать этикеток и ценников. Добавил свой реквизит, но ошибка
0 Антиквар
 
26.03.12
14:31
Всем привет.
Розница 1.0 (1.0.12.4)
В шаблон для печати этикеток и ценников нужно добавить информацию из одного регистра.
Т.е. нужно, чтобы в редактировании шаблона в доступных полях шаблона появился нужный мне реквизит.
Я открыл макет обработки печати ценников (СКД), там исправил запрос для набора данных, чтобы в полях запроса появилось нужное мне поле регистра сведений. Автоматически это поле появилось и в списке полей (таблица на вкладке Наборы данных).
После этого иду в 1С, захожу в редактирование шаблона, нужное мне поле появилось, добавляю его в шаблон. И думал что все готово.
Но при печати, и даже находясь в шаблоне по кнопке "Предварительный просмотр" - ошибка. Связана она с тем, что моё добавленное поле не является доступным полем выбора.
Не понимаю, где это указывается.
По коду дак вообще все просто:

Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаСКД));

СхемаСКД - это макет обработки Печати этикеток и ценников, который я как раз исправил, и в котором в полях появилось моё поле.
Далее по коду идет перебор элементов:

Компоновщик.Настройки.Выбор.ДоступныеПоляВыбора.Элементы[]

Здесь организация, магазины, номенклатура,...

Для номенклатуры это: Компоновщик.Настройки.Выбор.ДоступныеПоляВыбора.Элементы[1]

Далее идет перебор вложенных в номенклатуру элементов:
Компоновщик.Настройки.Выбор.ДоступныеПоляВыбора.Элементы[1].Элементы[]

Я перебрал все, моего реквизита тут нет. Хотя он ничем не отличается от того же штрих-кода, тоже регистр, через левое соединение выведенный в поля запроса.

Главное в макете я нигде не могу найти, чтобы эти "ДоступныеПоляВыбора" где-то настраивались, откуда они берутся?
1 Антиквар
 
26.03.12
15:32
up
2 Антиквар
 
26.03.12
16:26
Наверняка многие редактировали шаблон для печати этикеток и ценников, добавляя в него свои реквизиты. Проблем не возникало ни у кого?
3 Автор
 
26.03.12
16:49
Недавно делал. Изменял запрос в Макете Поля шаблона. Вроде плохонько, но заработало
4 Антиквар
 
26.03.12
16:58
(3) вот и я изменил этот запрос.
В итоге в 1С в шаблон без проблем мой реквизит добавляется, но при печати ошибка. Даже в шаблоне при предварительном просмотре. На одно и то же место ругается:
{ОбщийМодуль.УправлениеШаблонами(711)}: Не найдено поле Номенклатура.МойРеквизит
               ВызватьИсключение "Не найдено поле " + Стр.Поле;

Это как побороли? Или не было такого?
5 Антиквар
 
26.03.12
17:36
я в шоке.
Оказывается запрос в макете СКД вовсе не один такой запрос.
Я его исправил, добавил в него свой реквизит, и благодаря этому данный реквизит появился в списке выбора в шаблоне и его можно разместить на форме шаблона ценника.
Но чтоб распечатать, нужно тоже самое исправить в другом запросе, который в другом месте находится, потому как в макет СКД почему-то по факту передается совсем другой запрос.
Исправил, заработало.
Но пробую теперь сделать предварительный просмотр в редактировании шаблона, та же ошибка, иду искать откуда там ноги растут...
Не ожидал такого...
6 Автор
 
26.03.12
22:16
Могу сбросить в почту измененную обработку. Посмотришь что я там делал.
В паблик обработку с таким горе-запросом выкладывать не хочется. Делал просто на спор, подключить вычисляемые поля ума не хватило. Точнее функции из общих модулей ни как вычисляемые поля, ни как выражение представления не отработали.
7 Антиквар
 
27.03.12
09:16
(6) Спасибо, но вроде получилось у меня.
Я просто не ожидал, что для того, чтобы добавить свой реквизит в макет, нужно изменять кучу однотипных запросов в разных местах. Думал достаточно изменить запрос в самом макете СКД. Но в 1С в компоновщик передавался каждый раз другой запрос, и этот другой запрос тоже нужно везде исправлять.
Программист всегда исправляет последнюю ошибку.