Кто-нибудь подскажет, что нужно добавить в модуль обработки Печать ценника, чтобы вывести на ценник страну-производителя?
глупый вопрос, не сказана что за платформа 7.7 или 8.0 что за конфа, да и вообще для человека разбирающегося в програмировании 1С это примитив, а если 1с и в руках не держал то пара советов врятли чем то поможет...
Я конечно не такой умный, как Гость, но в детстве на бейсике и турбо-паскале чего-то писал, так что планирую разобраться. А то, что ,верссию не указал - извиняюсь, недоглядел. 7.7Торговля + склад
Сам-по-себе, вызов обработки ПечатьЦенников в нескольких местах есть (из формы элемента номенклатура, из формы списка номенклатура и др.). По-быстрому: Открываем форму элемента справочника Номенклатура, находим процедуру ПечатьЦенника(), находим ТабТМЦ = СоздатьОбъект("ТаблицаЗначений"); ТабТМЦ.НоваяКолонка("Товар"); ТабТМЦ.НоваяКолонка("Цена","Число"); ТабТМЦ.НоваяКолонка("Единица"); ТабТМЦ.НоваяКолонка("Валюта"); добавляем ТабТМЦ.НоваяКолонка("Страна"); находим процедуру ДобавитьВтаблицу(Табл, Товар, ТипЦены) в ней после Табл.Валюта = ВремВалюта; Табл.Единица = ВремЕдиница; добавляем Табл.Страна = Товар.СтранаПроисхождения; аналогично в других модулях, где есть вызов обработки ПечатьЦенников далее в обработке ПечатьЦенников в процедуре Сформировать() после ПечРозн = глФРМ(ТаблицаТоваров.Цена, ТаблицаТоваров.Валюта); ПечНаименование = ТаблицаТоваров.Товар; добавляем ПечСтрана = ТаблицаТоваров.Страна; чуть ниже меняем строку ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, Столбик, Ряд); на строку ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, ПечСтрана, Столбик, Ряд); затем заменяем строку Процедура ДобавитьЦенник(Таб, ПечФирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) на строку Процедура ДобавитьЦенник(Таб, ПечФирма, ПечНаименование, ПечЕдиница, ПечРозн, ПечСтрана, Столбик, Ряд) и в печатной форме (Таблица) вставляем в нужное место ПечСтрана, в свойствах ячейки, где будет выводиться страна, тип должен быть Выражение. Всё.
dj, спасибо за участие, вроде все сделал по описанию, но чего-то не получается, выдает: ПечСтрана = ТаблицаТоваровюСтрана; {Обработка.ПечатьЦенников.Форма.Модуль(62)}: Поле агрегатного объекта не обнаружено (Страна)
ПечСтрана = ТаблицаТоваровюСтрана; ю - это опечатка или так в модулЕ? dj, написал все правильно, ищи ошибку у себя.
SAshock, ю-опечатка, просто чаще пользуюсь латиницей. ошибку ищу добавлено через 48 минут Убей Бог, не пойму, что не так: Форма элемента справочника номенклатуры //****************************************************************************** // ДобавитьВтаблицу(Табл, Товар, ТипЦены) // // Параметры: // Табл - "ТаблицаЗначений" - в которую будем добавлять строку // Товар - "Справочник.Номенклатура" // ТипЦены - "Справочник.ТипыЦен" // // Возвращаемое значение: // Нет // // Описание: // Добавляет в таблицу значений новую строку // Процедура ДобавитьВтаблицу(Табл, Товар, ТипЦены) Перем ВремЦена, ВремЕдиница, ВремВалюта; Если глВернутьЦену(Товар, ТипЦены, РабочаяДата(), ВремЦена, ВремЕдиница, ВремВалюта) = 1 Тогда Табл.НоваяСтрока(); Табл.Товар = СокрЛП(Товар.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Товар.Артикул), ""); Табл.Цена = ВремЦена; Табл.Валюта = ВремВалюта; Табл.Единица = ВремЕдиница; Табл.Страна = Товар.СтранаПроисхождения; Иначе Сообщить("У товара """ + Товар.ПолнНаименование + """ отсутствует цена """ + ТипЦены + """"); КонецЕсли; КонецПроцедуры // ДобавитьВтаблицу() //****************************************************************************** // ПечатьЦенника() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Описание: // Выполняет печать ценников текущего элемента справочника Номенклатура. // Процедура ПечатьЦенника() Перем ПечЕдиница, ПечНаименование, ПечРозн; Перем Таб; Перем Столбик; Перем Ряд; Перем Процент, ПорядокОкр; Перем ТабТМЦ, ДанныеДляПечати; Если Выбран() = 0 Тогда Предупреждение("Печать можно выполнять только для записанных номенклатурных позиций", 60); Возврат; КонецЕсли; ТипЦены = СоздатьОбъект("Справочник.ТипыЦен"); Если ТипЦены.Выбрать("Типы цен",) = 0 Тогда Возврат; КонецЕсли; ТипЦены = ТипЦены.ТекущийЭлемент(); ТабТМЦ = СоздатьОбъект("ТаблицаЗначений"); ТабТМЦ.НоваяКолонка("Товар"); ТабТМЦ.НоваяКолонка("Цена","Число"); ТабТМЦ.НоваяКолонка("Единица"); ТабТМЦ.НоваяКолонка("Валюта"); ТабТМЦ.НоваяКолонка("Страна"); ВыбТМЦ = ТекущийЭлемент(); ДобавитьВтаблицу(ТабТМЦ, ВыбТМЦ, ТипЦены); // упакуем данные в список ДанныеДляПечати = СоздатьОбъект("СписокЗначений"); Фирма = СокрЛП(глЗначениеПоУмолчанию("ОсновнаяФирма").ЮрЛицо.ПолнНаименование); ДанныеДляПечати.ДобавитьЗначение(Фирма , "Фирма"); ДанныеДляПечати.ДобавитьЗначение(ТипЦены.Валюта , "Валюта"); ДанныеДляПечати.ДобавитьЗначение(ТабТМЦ , "Таблица"); ОткрытьФормуМодально("Обработка.ПечатьЦенников", ДанныеДляПечати); КонецПроцедуры // ПечатьЦенника() Обработка Печать Ценников //****************************************************************************** // ДобавитьЦенник(Таб, ПечФирма, ПечНаименование, ПечЕдиница, ПечРозн, Столбик, Ряд) // // Параметры: // Таб - таблица, в которую выполняется вывод ценника // ПечНаименование - наименование товара // ПечЕдиница - единица измерения товара // ПечРозн - цена товара // Столбик - номер столбика. // Ряд - номер ряда // // Возвращаемое значение: // Нет. // // Описание: // Добавляет ценник в таблицу. // Процедура ДобавитьЦенник(Таб, ПечФирма, ПечНаименование, ПечЕдиница, ПечРозн, ПечСтрана, Столбик, Ряд) Столбик = ?(Столбик = 0, 1 , 0 ); Ряд = ?(Столбик = 0, Ряд + 1, Ряд); Если Ряд > 5 Тогда Таб.НоваяСтраница(); Ряд = 1; КонецЕсли; Если Столбик = 0 Тогда Таб.ВывестиСекцию("Товар|Ценник"); Иначе Таб.ПрисоединитьСекцию("Товар|Ценник"); КонецЕсли; КонецПроцедуры // ДобавитьЦенник() //****************************************************************************** // Сформировать(ТаблицаТоваров, ПечФирма) // // Параметры: // ТаблицаТоваров - таблица значений, содержащая информацию о цене товара // ПечФирма - наименование фирмы, которое будет выводиться вверху ценника // // Возвращаемое значение: // Нет. // // Описание: // Формирует таблицу с ценниками. // Процедура Сформировать(ТаблицаТоваров,ПечФирма) // Создание Таблицы для выходного отчета Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); Столбик = 1; Ряд = 0; ТаблицаТоваров.ВыбратьСтроки(); Пока ТаблицаТоваров.ПолучитьСтроку() = 1 Цикл ПечРозн = глФРМ(ТаблицаТоваров.Цена, ТаблицаТоваров.Валюта); ПечНаименованиеТМЦ = ТаблицаТоваров.Товар; ПечСтрана = ТаблицаТоваров.Страна; ДобавитьЦенник(Таб, ПечФирма, ТаблицаТоваров.Товар, ТаблицаТоваров.Единица, ПечРозн, ПечСтрана, Столбик, Ряд); глОживить(1); КонецЦикла; //Вызов выходного отчета в окно просмотра и редактирования. Таб.Опции(0,0,0,0,"ПечатьЦенников","ПечатьЦенников"); Таб.ТолькоПросмотр(1); Таб.Показать("Товарные ценники",""); КонецПроцедуры //****************************************************************************** // Предопределенная процедура // Процедура ПриОткрытии() СтатусВозврата(0); ДанныеДляПечати = Форма.Параметр; Если ТипЗначенияСтр(ДанныеДляПечати) <> "СписокЗначений" Тогда Возврат; КонецЕсли; ПечФирма = ДанныеДляПечати.Получить("Фирма"); ТаблицаТоваров = ДанныеДляПечати.Получить("Таблица"); Сформировать(ТаблицаТоваров, ПечФирма); КонецПроцедуры // ПриОткрытии() добавлено через 1 час 35 минут а в каких еще модулях этот вызов может быть? распчатывать пытаюсь через номенклатуру. Сейчас переделал заново - опять та же ошибка: ПечСтрана = ТаблицаТоваров.Страна; {Обработка.ПечатьЦенников.Форма.Модуль(62)}: Поле агрегатного объекта не обнаружено (Страна)
с радостью бы это сделал и без подсказки и не морочил бы голову другим, если бы такая возможность была!
Запусти отладчик Табл.Страна = Товар.СтранаПроисхождения; на этой строке поставь точку остановки запусти печать ценника В отладчике обработка должна остановиться на стопе. проверь в Табло Товар.СтранаПроисхождения= чему равно? дальше по F8, можешь пробежать все обработку, внизу в Табло можно смотреть занчения переменной - удачи
Сам-по-себе, пропустил вот это: А вообще странно, только что проверил (первый пост писал просто глядя в конфигу , почти с закрытыми глазами) - все работает. А в строках: ТабТМЦ.НоваяКолонка("Страна"); Табл.Страна = Товар.СтранаПроисхождения; ПечСтрана = ТаблицаТоваров.Страна; буква С русская? Мож латиница? offtop. buffoon, вам жалко места на диске, которое занимает этот топик? мне нет, как не было жалко 5 минут времени на мой пост добавлено через 1 час 45 минут про пропустил - ошибся.
dj, буквы все русские 100% т.к. латиницей пользуюсь на другом компе, на этом ее почти не бывает. SAshock, спасибо за совет, завтра буду пробовать, на свежую голову добавлено через 17 часов 41 минуту SAshock, запустил отладчик, точку остановки поставил. Печать ценника из 1С производить? Если из отладчика, то как? (Извините юзера! Он играет как может!) Из 1С пытался - та же ошибка, а в отладчике ничего. Вот еще нашел ссылочку, попытался сделать по ней - не получилось, все работает, без запинок, но страну так и не выдает. добавлено через 17 часов 42 минуты По рецепту Гиви добавлено через 20 часов 39 минут Чего-то не пойму логику, может здесь ошибка: а ссылка идет потом на ТаблицаТоваров.Товар хотя колонка "Страна" создавалась в таблице значений. добавлено через 20 часов 42 минуты UPS... т.е.на ТаблицаТоваров.Страна
Сам-по-себе, печать из формы списка Номенклатура или из формы элемента ? Такая ошибка будет, если вот это изменить только в модуле формы элемента справочника Номенклатура, а печатать из формы списка справочника Номенклатура. Знаешь чем отличается форма элемента справочника от формы списка ?
а в чем проблема?? на сайте 1с мона найти телефоны.. обзваниваешь всех, находишь самых дешевых и оплатив 1 час получаешь свою настройку..
насколько я понимаю, форма элемента - для единицы номенклатуры, т.е. печать вызывается для самого элемента, а форма списка - соответственно из списка номенклатуры....или я ошибаюсь?
мазохист это когда в ущерб себе. а когда в ущерб другим (бухам, или менеджерам) это уже садизм , хотя может быть за это вам еще и деньги платят. а если не платят, то воспользуйтесь советом Buffoon`a
название другое этому, но модератры не пропустят.... неважно для кого вы это делаете (для себя или для людей) в любом случае вам нужен специалист, способный оказать помощь (либо обучить, либо настроить) ... осталось только осознать, что за работу которую не можешь выполнить сам надо платить...
Может человек лабу делает по 1С, может раазобраться хочет. Чего пристали то? ЗЫ. Спец лучше сделает. Я к примеру немного подругому это делал. Не страну в обработку передавал, а ссылку на сам товар. Вдруг потом надо будет не только страну указать, но и еще чего нибудь, то исправить можно только одну обработку, а не 5 мест, откуда она вызывается.
чукча не читатель?? я же сказал, что в этом случае необходим специалист способный обучить.... и за эту работу (обучение) специалисту придется заплатить....
И читатель и писатель. Напрягите пару извилен, подумайте, какой опыт более ценен? Теоретический (когда пришли и всё показали) или практический(когда руками попробовал)? Как я понял по треду, ни срочности ни критичности в разборе вопроса нет, человек потихоньку разбирается с несложной задачкой, а вы ему тут ТЗ по ГОСТу предлагаете писать с заключением договора у франча. А может и денег банально нету. Или живёт далеко. Есть анекдот в тему (про чукчу кстати) Застрял геолог в тундре на машине, мучается, пытается вытащить. Мимо чукча на оленях проезжает, и говорит "Я знаю что делать, за бутылку скажу." Геолог "Да за бутылку я сам вытащу" Чукча дальше поехал. Часов через нцать возвращается чукча, геолог всё там-же, только более за...мучен, к чукче - "Вот пузырь скажи что делать?" Чукча взял пузырь, выпил его, подумал и говорит "Тут траактор нужен". ЗЫ Так кто из нас чукча?
судя по языку.... нинада за меня додумывать....читайте внимательно... практика без теории - ничто... прежде чем чтото пробовать - надо знать где и что именно...
Очепятки у всех бывают. Человек конкретно задал вопрос - что сделать? А вы ему "Траактор надо, однако". Намек понятен? Дык, спросил бы наверное по другому. Напр, "А кто меня научит за денюжку страны в ценники включать" или "А что почитать(где научиться) вставлять страну в ценник".
читать так и не научились... попробую разжевать: низя объяснить слепому красоту заката... да и лечение по фотографии обычно не эффективно..