Опишу все по порядку: Задача - присвоить каждой позиции номенклатуры ЦеновуюГруппу, знаю есть похожее, но не удовлетворяет, вообщем создал справочник ЦеновыеГруппыНоменклатуры, в которой храниться наценка для Розницы и возможные скидки, хочу сделать так что б при создании документа УстановкаЦенНоменклатуры для типа цены РОзница цена увеличивалась на процент из справочника ценовой группы, далее уже при реализации я буду выбирать возможную скидку,но для начала хочу сделать установку цен номенклатуры 1.Создаю документ "Поступление товаров и услуг" (в нем уже сделал колонку для отображения к какой ценовой группе относиться данный товар) 2.На основании создаю УстановкаЦенНоменклатуры, но вот не получается у меня вывести колонку мою по ГруппамЦен, где то не знаю где формируются колонки при создании на основании, основная проблема заключается в выводе этой колонки, а дальше я уже смогу сделать что б пересчитывалась цена розничная
Извиняюсь за много бУкаФФ, помогите плз в моем легком для Вас и не легком для меня
Сообщение отредактировал MATEVI - 10.09.12, 12:58
Причина редактирования: Сорри это я что не допонял. Перенесу обратно в программирование
То что я понял. В приходной есть "Цена контрагента" В форме "Цена контрагента" есть "Цена номенклатуры". Эта "цена номенклатуры" будет проставляться при вводе на основании.
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1434 раз
Рейтинг: 0
я в принципе понял о чем речь, т.к. нечто подобное приходилось делать.
В двух словах: представление табличной части документа выполнено в виде таблицы значений. Основные колонки добавлены на таблицу значений, а колонки с ценами добавляются программно. События обрабатывающие эти колонки также добавляются программно, и сама таблица значений переносится в табличную часть естественно программно.
Для того что бы отобразилась Ваша колонка: 1. нужно добавить её в табличную часть документа 2. добавить её в таблицу на форме,т.к. она не будет динамически формироваться в зависимости от выбранных типов цен 3. изменить процедуру которая отвечает за перенос данных из табличной части в таблицу значений на форме и наоборот. 4. ну и откорректировать процедуры которые отвечают за формирование цен.
В общем алгоритм вроде такой, но могу и ошибаться т.к. делал это достаточно давно.
я в принципе понял о чем речь, т.к. нечто подобное приходилось делать.
В двух словах: представление табличной части документа выполнено в виде таблицы значений. Основные колонки добавлены на таблицу значений, а колонки с ценами добавляются программно. События обрабатывающие эти колонки также добавляются программно, и сама таблица значений переносится в табличную часть естественно программно.
Для того что бы отобразилась Ваша колонка: 1. нужно добавить её в табличную часть документа 2. добавить её в таблицу на форме,т.к. она не будет динамически формироваться в зависимости от выбранных типов цен 3. изменить процедуру которая отвечает за перенос данных из табличной части в таблицу значений на форме и наоборот. 4. ну и откорректировать процедуры которые отвечают за формирование цен.
В общем алгоритм вроде такой, но могу и ошибаться т.к. делал это достаточно давно.
1. Добавил справочник, добавил в табличную часть документа и указала на справочникссылку 2.В форме добавил, но при добавлении на основании ее нет, добавляется ТАблицаЦен в которой нет моей новой колонки. 3.Смотрел процедуру
как не нашел где формируются именно нуЖные колонки, лишние в процедурах пробежался убрал, которые использовать не буду, причем убрал что не заполняется их значение, а сами колонки остались пустыми, как их убрать тоже не понятно. В общем проблема заключается в том, что я не пойму - в какой процедуре формируются динамически колонки при создании документа на основании в зависимости от типа цены
Сообщение отредактировал pablo - 11.09.12, 9:02
Причина редактирования: А вообще, нудные колонки - это феерично :)
Смотрел, лишние поубирал, нужные добавил п.с. колонка характеристики так и оставил, но данные прописал к моему новому справочнику. убрать бы еще способ и проценты, но они уже убраны, а при создании на основании все равно есть.
!
Правила п.2
Процедура ОбновитьСоставКолонок()
// Надо расположить все нужные колонки в правильном порядке. // Сначала должна идти колонка "Код". КолонкиТаблицыЦен = ТаблицаЦен.Колонки; ОчереднойНомерКолонки = 1;
На примере конфигурации розница. Колонка "Группа" добавлена в левой половине (до колонок с ценой).
Цитата
Процедура ОбновитьСоставКолонок()
// Надо расположить все нужные колонки в правильном порядке. // Сначала должна идти колонка "Код". КолонкиТаблицыЦен = ТаблицаЦен.Колонки; ОчереднойНомерКолонки = 1;
С колонками которые динамически не появляются в[ ]зависимости от выбора типа цены все окей, а вот колонки которые появляются, необходимо убрать две, вроде бы во всех процедурах закоменнтил их, но они все равно есть, причем при добавленнии на основании, вот процедурка при добавлении на основании
!
Правила п.2. Скорость написания Вами текста влияет на скорость получения ответа обратнопропорционально количеству грамматических и орфографических ошибок
Процедура ЗаполнитьТабличнуюЧастьПоПоступлениюНаОсновании(ДокументПоступление,Перезаполнение=Ложь) Перем Отказ; Отказ = Ложь; ТипЦенБазовый = ДокументПоступление.ТипЦен.ТипЦеныНоменклатуры; Если ЗначениеЗаполнено(ТипЦенБазовый) И ТипЦенБазовый.Рассчитывается Тогда ОбщегоНазначения.СообщитьОбОшибке("В документе поступления для типа цены контрагента выбран динамический тип цен номенклатуры." + Символы.ПС+ "Расчет цен номенклатуры на основании цен контрагента выполнить невозможно!", Отказ); КонецЕсли; Если Отказ Тогда возврат; КонецЕсли;
Запрос.Текст = " |ВЫБРАТЬ | ТоварыИзДокумента.*, | СпрТипыЦен.Ссылка КАК ТипЦен, | СпрТипыЦен.ВалютаЦены КАК ВалютаТипаЦены, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки, СпрТипыЦен.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены, СпрТипыЦен.СпособРасчетаЦены) КАК СпособРасчетаЦены |ИЗ | (ВЫБРАТЬ | Док.Ссылка.СуммаВключаетНДС КАК СуммаВключаетНДС, | Док.Ссылка.ВалютаДокумента КАК ВалютаДокумента, | Док.Номенклатура КАК Номенклатура, | Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | СРЕДНЕЕ(Док.Цена) КАК Цена, | Док.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Док.СтавкаНДС КАК СтавкаНДС, | МИНИМУМ(Док.НомерСтроки) КАК НомерСтроки | ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК Док | ГДЕ | Док.Ссылка = &ДокументОснование | СГРУППИРОВАТЬ ПО | Док.Ссылка.СуммаВключаетНДС, | Док.Ссылка.ВалютаДокумента, | Док.Номенклатура, | Док.ХарактеристикаНоменклатуры, | Док.ЕдиницаИзмерения, | Док.СтавкаНДС | ) КАК ТоварыИзДокумента |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | Справочник.ТипыЦенНоменклатуры КАК СпрТипыЦен |ПО | СпрТипыЦен.Ссылка В (&ПодчиненныеТипыЦен) |ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен В (&ПодчиненныеТипыЦен)) КАК ЦеныНоменклатурыСрезПоследних |ПО | СпрТипыЦен.Ссылка = ЦеныНоменклатурыСрезПоследних.ТипЦен | И ТоварыИзДокумента.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | И ТоварыИзДокумента.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры |УПОРЯДОЧИТЬ ПО | ТоварыИзДокумента.НомерСтроки |";
СтруктураПоиска = Новый Структура;
Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл СтруктураПоиска.Вставить("Номенклатура" , Выборка.Номенклатура); СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", Выборка.Номенклатура.ЦеноваяГруппаНоменклатуры);
Благополучно на основании создает и заполняет мои новые колонки, но после записи документа, при открытии его остаются значения только тех реквизитов, что были раньше, а мои новые колонки пустые, я так понимаю где то мои колонки не записываются во временную таблицу, подскажите плиз куда смотреть при записи/проведении что б они сохранялись?
Благополучно на основании создает и заполняет мои новые колонки, но после записи документа, при открытии его остаются значения только тех реквизитов, что были раньше, а мои новые колонки пустые, я так понимаю где то мои колонки не записываются во временную таблицу, подскажите плиз куда смотреть при записи/проведении что б они сохранялись?
Думаю надо смотреть ПРиОткрытии() проц ЗаполнитьТаблицуЦенФормы() и добавить заполнение своих колонок
Фухх, все получилось, дописал в процедуру ПередЗаписью() запись реквизитов из временную таблицы в "Товары" и в процедуре ЗаполнитьТаблицуЦенФормы() выгрузил из таблицы товаров в колонки соотвествующие, выкладываю свои процедурки, быть может есть косяки
// Сохраним таблицу значений в табличную часть товаров. Товары.Очистить(); КоличествоСтрок = ТаблицаЦен.Количество() - 1; Для Тмп = 0 По КоличествоСтрок Цикл СтрокаТаблицыТиповЦен = ТаблицаЦен[Тмп];
Для Каждого СтрокаТипаЦен Из ТипыЦен Цикл НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[СтрокаТипаЦен.ТипЦен];
ТекущийИндексСтрокиТаблицыЦен = Неопределено; НоваяСтрока = Неопределено; Для Каждого СтрокаТаблицыТоваров Из ТаблицаТоваров Цикл Если ТекущийИндексСтрокиТаблицыЦен <> СтрокаТаблицыТоваров.ИндексСтрокиТаблицыЦен Или НоваяСтрока.Номенклатура <> СтрокаТаблицыТоваров.Номенклатура Или НоваяСтрока.ХарактеристикаНоменклатуры <> СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры Тогда НоваяСтрока = ТаблицаЦен.Добавить(); НоваяСтрока.Номенклатура = СтрокаТаблицыТоваров.Номенклатура; НоваяСтрока.ХарактеристикаНоменклатуры = СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры; ТекущийИндексСтрокиТаблицыЦен = СтрокаТаблицыТоваров.ИндексСтрокиТаблицыЦен; КонецЕсли;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!