Имя: Пароль:
1C
1С v8
Как вывести нужный вариант данных в свойства реквизита
0 Russkiy
 
07.11.12
12:21
Привет, ребята-1С-ники!

У меня 1С:Предприятие 8.2 (8.2.15.318), конфигурация "Управление торговлей для Украины", редакция 2.3.

Я тут подгоняю формы документов под специфику товара (а товар у меня - книги). Большинство документов уже сделал - изменения однотипные. А вот в двух документах - "План продаж" и "План закупок", -  сделать того же не могу. Здесь требуются изменения другого типа. Подскажите, пожалуйста, кто знает...

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

Надеюсь, что я не слишком сложно и путано обрисовал своё затруднение. Если кто знает (а знают многие, если не все) - подскажите, пожалуйста, как решить проблему, буду весьма признателен.
1 Undefined vs NULL
 
07.11.12
12:23
если авторов несколько?
зачем реквизит вообще если авторы однозначно определяются самой книгой?

это курсовая?
2 Russkiy
 
07.11.12
12:33
Ща, ребята, ещё одно полезное дополнение. Во многих других документах эта задача решалась таким образом: в модуле формы документа, в процедуре "ТоварыПриВыводеСтроки", добавлялось несколько строк такого рода:

   ОформлениеСтроки.Ячейки.Автор.УстановитьТекст(ДанныеСтроки.Номенклатура.Автор);
   ОформлениеСтроки.Ячейки.Издательство.УстановитьТекст(ДанныеСтроки.Номенклатура.Издательство);
   ОформлениеСтроки.Ячейки.ГодИздания.УстановитьТекст(ДанныеСтроки.Номенклатура.ГодИздания);
   ОформлениеСтроки.Ячейки.Оформление.УстановитьТекст(ДанныеСтроки.Номенклатура.Оформление);
   ОформлениеСтроки.Ячейки.Формат.УстановитьТекст(ДанныеСтроки.Номенклатура.Формат);
   ОформлениеСтроки.Ячейки.Страниц.УстановитьТекст(ДанныеСтроки.Номенклатура.Страниц)

И после этого в созданных колонках формы появлялись нужные мне данные. Я пытался сделать то же и в этом документе, но не получилось - система ругается... Да и процедуры такой в этой форме документа ("План закупок") нет. Я пытался вставить эти строки модуля в процедуру "ОбработкаПодбораНоменклатура(ТабличнаяЧасть, ЗначениеВыбора). Вот её код:

Процедура ОбработкаПодбораНоменклатура(ТабличнаяЧасть, ЗначениеВыбора)

   Перем СпособЗаполненияЦен, ВалютаЦены, Номенклатура, Автор, Издательство, ГодИздания, Страниц, Формат, Оформление, ЕдиницаИзмерения, Количество, Цена, Характеристика;

   // Получим параметры подбора из структуры подбора.
   ЗначениеВыбора.Свойство("СпособЗаполненияЦен", СпособЗаполненияЦен);
   ЗначениеВыбора.Свойство("ВалютаЦены", ВалютаЦены);
   ЗначениеВыбора.Свойство("Номенклатура", Номенклатура);
   
   ЗначениеВыбора.Свойство("ЕдиницаИзмерения", ЕдиницаИзмерения);
   ЗначениеВыбора.Свойство("Количество", Количество);
   ЗначениеВыбора.Свойство("Цена", Цена);
   ЗначениеВыбора.Свойство("Характеристика", Характеристика);
   
   // Ищем выбранную позицию в таблице подобранной номенклатуры.
   // Если найдем - увеличим количество; не найдем - добавим новую строку.
   СтруктураОтбора = Новый Структура();
   
   Если Номенклатура.Услуга Тогда
       
       СтруктураОтбора = Новый Структура("Номенклатура", Номенклатура);
       
   Иначе
       
       СтруктураОтбора = Новый Структура("ЕдиницаИзмерения, ХарактеристикаНоменклатуры", ЕдиницаИзмерения, Характеристика);
       
   КонецЕсли;
   
   СтрокаТабличнойЧасти = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ТабличнаяЧасть, СтруктураОтбора);
   
   Если СтрокаТабличнойЧасти = Неопределено Тогда

       // Не нашли - добавляем новую строку.
       СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
       СтрокаТабличнойЧасти.Номенклатура = Номенклатура;
       
       СтрокаТабличнойЧасти.Количество = Количество;
       СтрокаТабличнойЧасти.ЕдиницаИзмерения = ЕдиницаИзмерения;
       СтрокаТабличнойЧасти.Коэффициент = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
       СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Характеристика;

       // Заполняем реквизиты табличной части.
       ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

       // Пересчитаем цену в валюту документа.
       Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, ВалютаДокумента, КурсДокумента, КратностьДокумента, Дата);

       СтрокаТабличнойЧасти.Цена = Ценообразование.ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена, СпособЗаполненияЦен, ТипЦен.ЦенаВключаетНДС, УчитыватьНДС, СуммаВключаетНДС, НалоговыйУчет.ПолучитьСтавкуНДС(СтрокаТабличнойЧасти.СтавкаНДС));

       // Рассчитываем реквизиты табличной части.
       ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
       ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

   Иначе
       
       // Нашли, увеличиваем количество в первой найденной строке.
       СтрокаТабличнойЧасти.Количество = СтрокаТабличнойЧасти.Количество + Количество;

       // Рассчитать реквизиты табличной части.
       ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
       ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

   КонецЕсли;

   ЭлементыФормы.СоставПлана.ТекущаяСтрока = СтрокаТабличнойЧасти;
   
   Попытка // На случай, если колонка не видима, отключена программно
       
       ЭлементыФормы.СоставПлана.ТекущаяКолонка = мКолонкиСоставПлана["Количество"];
       
   Исключение
       
   КонецПопытки;
   
КонецПроцедуры // ОбработкаПодбораНоменклатура()


Есть подозрение, что всё-таки надо дополнять код одной из процедур модуля, а какой и как - пока не пойму...

Нет, это не курсовая, это реальная работа. Мне нужно видеть ряд реквизитов для точной идентификации книг при подборе их в тот или иной документ.
3 Russkiy
 
07.11.12
12:37
И ещё: я, конечно, вышеприведённые строки вставлял в процедуру не в точности так же, как я их здесь привёл, а по аналогии со строками процедуры, приблизительно так:

СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
       СтрокаТабличнойЧасти.Номенклатура = Номенклатура;

       СтрокаТабличнойЧасти.Автор = Автор;
       
       СтрокаТабличнойЧасти.Количество = Количество;
       СтрокаТабличнойЧасти.ЕдиницаИзмерения = ЕдиницаИзмерения;
       СтрокаТабличнойЧасти.Коэффициент = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
       СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Характеристика;

Но - не получается так...
4 vmv
 
07.11.12
12:38
как то все мрачно, ибо тс пока не владеет искусством лаконичного и четкого изложения мысли!

в сабже лишь запутанный лепет и истерики.

*пичалицца*
5 vmv
 
07.11.12
12:40
ВЫЛОЖИ СКРИНЫ с таблицами или рисунками

1. сейчас так
2. а надо так

и спроси просто чяднт!
6 Russkiy
 
07.11.12
12:44
Лаконизм и чёткость изложения страдают? Возможно... Это прежде всего оттого, что я не программист 1С. Но вот истерики и следа нет...

Что же до скриншотов, то мне пока не очень понятно, что же надо показать по этому принципу - "сейчас так, а надо так". Ща подумаю, как это сделать... Хотя, как мне кажется, всё изложено вполне ясно. Только для меня?..
7 Russkiy
 
07.11.12
12:51
Кстати, ребята, я уж не первый год пользуюсь услугами этого форума, но вот выводить в свои темы изображения (скриншоты) пока не приходилось - просто ещё не возникала потребность... Теперь, похоже, возникла. Как это здесь делается?