Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Установка цен номенклатуры (табличная часть)          
bereznoy Подменю пользователя
сообщение 10.09.12, 10:38
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Опишу все по порядку:
Задача - присвоить каждой позиции номенклатуры ЦеновуюГруппу, знаю есть похожее, но не удовлетворяет, вообщем создал справочник ЦеновыеГруппыНоменклатуры, в которой храниться наценка для Розницы и возможные скидки, хочу сделать так что б при создании документа УстановкаЦенНоменклатуры для типа цены РОзница цена увеличивалась на процент из справочника ценовой группы, далее уже при реализации я буду выбирать возможную скидку,но для начала хочу сделать установку цен номенклатуры
1.Создаю документ "Поступление товаров и услуг" (в нем уже сделал колонку для отображения к какой ценовой группе относиться данный товар)
2.На основании создаю УстановкаЦенНоменклатуры, но вот не получается у меня вывести колонку мою по ГруппамЦен, где то не знаю где формируются колонки при создании на основании, основная проблема заключается в выводе этой колонки, а дальше я уже смогу сделать что б пересчитывалась цена розничная

Извиняюсь за много бУкаФФ, помогите плз в моем легком для Вас и не легком для меня

Сообщение отредактировал MATEVI - 10.09.12, 12:58
Причина редактирования: Сорри это я что не допонял. Перенесу обратно в программирование


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

Ardi Подменю пользователя
сообщение 10.09.12, 12:08
Сообщение #2

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

То что я понял.
В приходной есть "Цена контрагента"
В форме "Цена контрагента" есть "Цена номенклатуры". Эта "цена номенклатуры" будет проставляться при вводе на основании.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Batchir Подменю пользователя
сообщение 10.09.12, 12:35
Сообщение #3

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

я в принципе понял о чем речь, т.к. нечто подобное приходилось делать.

В двух словах: представление табличной части документа выполнено в виде таблицы значений. Основные колонки добавлены на таблицу значений, а колонки с ценами добавляются программно. События обрабатывающие эти колонки также добавляются программно, и сама таблица значений переносится в табличную часть естественно программно.

Для того что бы отобразилась Ваша колонка:
1. нужно добавить её в табличную часть документа
2. добавить её в таблицу на форме,т.к. она не будет динамически формироваться в зависимости от выбранных типов цен
3. изменить процедуру которая отвечает за перенос данных из табличной части в таблицу значений на форме и наоборот.
4. ну и откорректировать процедуры которые отвечают за формирование цен.

В общем алгоритм вроде такой, но могу и ошибаться т.к. делал это достаточно давно.

bereznoy Подменю пользователя
сообщение 10.09.12, 23:07
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Цитата(Batchir @ 10.09.12, 13:35) *
я в принципе понял о чем речь, т.к. нечто подобное приходилось делать.

В двух словах: представление табличной части документа выполнено в виде таблицы значений. Основные колонки добавлены на таблицу значений, а колонки с ценами добавляются программно. События обрабатывающие эти колонки также добавляются программно, и сама таблица значений переносится в табличную часть естественно программно.

Для того что бы отобразилась Ваша колонка:
1. нужно добавить её в табличную часть документа
2. добавить её в таблицу на форме,т.к. она не будет динамически формироваться в зависимости от выбранных типов цен
3. изменить процедуру которая отвечает за перенос данных из табличной части в таблицу значений на форме и наоборот.
4. ну и откорректировать процедуры которые отвечают за формирование цен.

В общем алгоритм вроде такой, но могу и ошибаться т.к. делал это достаточно давно.


1. Добавил справочник, добавил в табличную часть документа и указала на справочникссылку
2.В форме добавил, но при добавлении на основании ее нет, добавляется ТАблицаЦен в которой нет моей новой колонки.
3.Смотрел процедуру
ЗаполнитьТабличнуюЧастьПоПоступлениюНаОсновании(ДокументПоступление,Перезаполнение=Ложь)
как не нашел где формируются именно нуЖные колонки, лишние в процедурах пробежался убрал, которые использовать не буду, причем убрал что не заполняется их значение, а сами колонки остались пустыми, как их убрать тоже не понятно. В общем проблема заключается в том, что я не пойму - в какой процедуре формируются динамически колонки при создании документа на основании в зависимости от типа цены

Сообщение отредактировал pablo - 11.09.12, 9:02
Причина редактирования: А вообще, нудные колонки - это феерично :)


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

Batchir Подменю пользователя
сообщение 11.09.12, 10:51
Сообщение #5

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Посмотрите ОбновитьСоставКолонок()

bereznoy Подменю пользователя
сообщение 11.09.12, 12:38
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Цитата(Batchir @ 11.09.12, 11:51) *
Посмотрите ОбновитьСоставКолонок()

Смотрел, лишние поубирал, нужные добавил
п.с. колонка характеристики так и оставил, но данные прописал к моему новому справочнику.
убрать бы еще способ и проценты, но они уже убраны, а при создании на основании все равно есть.

 ! 

Правила п.2
 

Процедура ОбновитьСоставКолонок()

    // Надо расположить все нужные колонки в правильном порядке.
    // Сначала должна идти колонка "Код".
    КолонкиТаблицыЦен = ТаблицаЦен.Колонки;
    ОчереднойНомерКолонки = 1;

    ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Код");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

    ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Артикул");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

    ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Номенклатура");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

    ТекущаяКолонка = КолонкиТаблицыЦен.Найти("ХарактеристикаНоменклатуры");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

    Для Каждого СтрокаТипаЦен Из ТипыЦен Цикл
        Если НЕ ЗначениеЗаполнено(СтрокаТипаЦен.ТипЦен) Тогда
            Продолжить;
        КонецЕсли;

        НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[СтрокаТипаЦен.ТипЦен];
        Если НомерСоответствияТекущейКолонки = Неопределено Тогда
            НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен.Количество();
            мСоответствиеТиповЦен.Вставить(СтрокаТипаЦен.ТипЦен, мСоответствиеТиповЦен.Количество());
        КонецЕсли;

        
    
        // Валюта.
        ТекущаяКолонка = КолонкиТаблицыЦен.Найти("валюта" + НомерСоответствияТекущейКолонки);
        Если ТекущаяКолонка = Неопределено Тогда // надо вставить
            КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "валюта" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.Валюты"), "Валюта", 8);
            ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
        Иначе
            СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
        КонецЕсли;

        // Единица измерения.
        ТекущаяКолонка = КолонкиТаблицыЦен.Найти("единица" + НомерСоответствияТекущейКолонки);
        Если ТекущаяКолонка = Неопределено Тогда // надо вставить
            КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "единица"+НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), "Единица", 8);
            ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
        Иначе
            СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
        КонецЕсли;
        
        // Цена.
        ТекущаяКолонка = КолонкиТаблицыЦен.Найти("цена" + НомерСоответствияТекущейКолонки);
        Если ТекущаяКолонка = Неопределено Тогда // надо вставить
            КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "цена" + НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2, ДопустимыйЗнак.Неотрицательный), СокрЛП(СтрокаТипаЦен.ТипЦен), 10);
            ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
        Иначе
            СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
        КонецЕсли;


КонецЦикла;
    ЭлементыФормы.ТаблицаЦен.СоздатьКолонки();

    // Установим недостающие параметры.
    УстановитьНедостающиеПараметры();

КонецПроцедуры // ОбновитьСоставКолонок()


Сообщение отредактировал pablo - 11.09.12, 13:40


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

Ardi Подменю пользователя
сообщение 11.09.12, 12:57
Сообщение #7

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

На примере конфигурации розница.
Колонка "Группа" добавлена в левой половине (до колонок с ценой).


Цитата
Процедура ОбновитьСоставКолонок()

// Надо расположить все нужные колонки в правильном порядке.
// Сначала должна идти колонка "Код".
КолонкиТаблицыЦен = ТаблицаЦен.Колонки;
ОчереднойНомерКолонки = 1;

ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Код");
СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Артикул");
СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Группа"); //РОМ++
СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки); //РОМ++


Результат


Сообщение отредактировал Ardi - 11.09.12, 12:53


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Спасибо сказали: bereznoy,

bereznoy Подменю пользователя
сообщение 11.09.12, 14:23
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

С колонками которые динамически не появляются в[ ]зависимости от выбора типа цены все окей, а вот колонки которые появляются, необходимо убрать две,
вроде бы во всех процедурах закоменнтил их, но они все равно есть, причем при добавленнии на основании, вот процедурка при добавлении на основании

 ! 

Правила п.2.
Скорость написания Вами текста влияет на скорость получения ответа обратнопропорционально количеству грамматических и орфографических ошибок
 

Процедура ЗаполнитьТабличнуюЧастьПоПоступлениюНаОсновании(ДокументПоступление,Перезаполнение=Ложь)
    Перем Отказ;
    Отказ = Ложь;
    ТипЦенБазовый = ДокументПоступление.ТипЦен.ТипЦеныНоменклатуры;
    Если ЗначениеЗаполнено(ТипЦенБазовый) И ТипЦенБазовый.Рассчитывается Тогда
        ОбщегоНазначения.СообщитьОбОшибке("В документе поступления для типа цены контрагента выбран динамический тип цен номенклатуры." + Символы.ПС+ "Расчет цен номенклатуры на основании цен контрагента выполнить невозможно!", Отказ);
    КонецЕсли;
    Если Отказ Тогда
        возврат;
    КонецЕсли;
    
    Если Не Перезаполнение Тогда
    
        // Получим подчиненные типы цен.
        ПодчиненныеТипыЦен = ПолучитьПодчиненныеТипыЦен(ТипЦенБазовый);
        ПодчиненныеТипыЦен.Добавить(ТипЦенБазовый);

        //Обойдем массив в обратном порядке.
        КоличествоПодчиненныхТипов = ПодчиненныеТипыЦен.Количество();
        Для Тмп = 1 По КоличествоПодчиненныхТипов Цикл
            СтрокаТабличнойЧасти = ТипыЦен.Добавить();
            СтрокаТабличнойЧасти.ТипЦен = ПодчиненныеТипыЦен[КоличествоПодчиненныхТипов - Тмп];
        КонецЦикла;

    Иначе
        ПодчиненныеТипыЦен = ТипыЦен.ВыгрузитьКолонку("ТипЦен");
    КонецЕсли;    
        
    //ЗаполнитьСписокТиповЦен();

    // Обновим состав колонок.
    ОбновитьСоставКолонок();
    //ПолучитьСтруктуруПоложенийКолонок();
    //ВидимостьКолонок();

    Запрос = Новый Запрос;

    Запрос.УстановитьПараметр("Дата", РабочаяДата);  
    Запрос.УстановитьПараметр("ДокументОснование", ДокументПоступление);
    Запрос.УстановитьПараметр("ПодчиненныеТипыЦен", ПодчиненныеТипыЦен);

    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ТоварыИзДокумента.*,
    |    СпрТипыЦен.Ссылка КАК ТипЦен,
    |    СпрТипыЦен.ВалютаЦены КАК ВалютаТипаЦены,
    |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки, СпрТипыЦен.ПроцентСкидкиНаценки) КАК ПроцентСкидкиНаценки,
    |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены, СпрТипыЦен.СпособРасчетаЦены) КАК СпособРасчетаЦены
    |ИЗ
    |    (ВЫБРАТЬ
    |        Док.Ссылка.СуммаВключаетНДС КАК СуммаВключаетНДС,
    |        Док.Ссылка.ВалютаДокумента КАК ВалютаДокумента,
    |        Док.Номенклатура КАК Номенклатура,
    |        Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |        СРЕДНЕЕ(Док.Цена) КАК Цена,
    |        Док.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    |        Док.СтавкаНДС КАК СтавкаНДС,
    |        МИНИМУМ(Док.НомерСтроки) КАК НомерСтроки
    |    ИЗ
    |        Документ.ПоступлениеТоваровУслуг.Товары КАК Док
    |    ГДЕ
    |        Док.Ссылка = &ДокументОснование
    |    СГРУППИРОВАТЬ ПО
    |        Док.Ссылка.СуммаВключаетНДС,
    |        Док.Ссылка.ВалютаДокумента,
    |        Док.Номенклатура,
    |        Док.ХарактеристикаНоменклатуры,
    |        Док.ЕдиницаИзмерения,
    |        Док.СтавкаНДС
    |    ) КАК ТоварыИзДокумента
    |ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |    Справочник.ТипыЦенНоменклатуры КАК СпрТипыЦен
    |ПО
    |    СпрТипыЦен.Ссылка В (&ПодчиненныеТипыЦен)
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен В (&ПодчиненныеТипыЦен)) КАК ЦеныНоменклатурыСрезПоследних
    |ПО
    |    СпрТипыЦен.Ссылка = ЦеныНоменклатурыСрезПоследних.ТипЦен
    |    И ТоварыИзДокумента.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |    И ТоварыИзДокумента.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
    |УПОРЯДОЧИТЬ ПО
    |    ТоварыИзДокумента.НомерСтроки
    |";

    СтруктураПоиска = Новый Структура;

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

        Если СтрокаТабличнойЧасти = Неопределено Тогда
            СтрокаТабличнойЧасти = ТаблицаЦен.Добавить();
            СтрокаТабличнойЧасти.Номенклатура               = Выборка.Номенклатура;
        
            СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Выборка.Номенклатура.ЦеноваяГруппаНоменклатуры;
            СтрокаТабличнойЧасти.ЦеноваяГруппаНоменклатуры = Выборка.Номенклатура.ЦеноваяГруппаНоменклатуры;
            СтрокаТабличнойЧасти.ПриходнаяЦена = Выборка.Цена;

        КонецЕсли;

        ТипЦенНоменклатуры = Выборка.ТипЦен;

        СтрокаТипаЦен = ТипыЦен.Найти(ТипЦенНоменклатуры);
        НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[ТипЦенНоменклатуры];

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

    //    СпособРасчетаЦены = Выборка.СпособРасчетаЦены;
    //    НовыйПроцент      = Выборка.ПроцентСкидкиНаценки;

//            ЕдиницаИзмерения  = Выборка.ЕдиницаИзмерения;

        Если (НЕ ЗначениеЗаполнено(ТипЦенНоменклатуры.БазовыйТипЦен))
            ИЛИ ТипЦенБазовый = ТипЦенНоменклатуры Тогда
            НоваяЦена = БазоваяЦена;
            СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(Выборка.ВалютаТипаЦены, Дата);
            НоваяЦена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(НоваяЦена, Выборка.ВалютаДокумента, Выборка.ВалютаТипаЦены, СтруктураКурсаВзаиморасчетов.Курс, СтруктураКурсаВзаиморасчетов.Кратность);
        Иначе
            //Если СпособРасчетаЦены = Перечисления.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип Тогда
            //    НоваяЦена = БазоваяЦена * (1 + НовыйПроцент / 100);
            //ИначеЕсли СпособРасчетаЦены = Перечисления.СпособыРасчетаЦены.ПоВхождениюБазовойЦеныВДиапазон Тогда
            //    НоваяЦена = Ценообразование.ПолучитьЦенуПоЦеновымДиапазонам(ТипЦенНоменклатуры, Дата, БазоваяЦена, ВалютаДокумента, ВалютаДокумента);
            //    НовыйПроцент = 0;
            //Иначе
            //    НоваяЦена = 0;
            //КонецЕсли;
            СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(Выборка.ВалютаТипаЦены, Дата);
            НоваяЦена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(НоваяЦена, Выборка.ВалютаДокумента, Выборка.ВалютаТипаЦены, СтруктураКурсаВзаиморасчетов.Курс, СтруктураКурсаВзаиморасчетов.Кратность);
            
            НоваяЦена = Ценообразование.ОкруглитьЦену(НоваяЦена, ПорядокОкругления, ОкруглятьВБольшуюСторону);
        КонецЕсли;

        СтрокаТабличнойЧасти["цена" + НомерСоответствияТекущейКолонки]          = НоваяЦена;
//        СтрокаТабличнойЧасти["СпособРасчета" + НомерСоответствияТекущейКолонки] = СпособРасчетаЦены;
        СтрокаТабличнойЧасти["валюта" + НомерСоответствияТекущейКолонки]        = ВалютаДокумента;
        СтрокаТабличнойЧасти["единица" + НомерСоответствияТекущейКолонки]       = ЕдиницаИзмерения;
    //    СтрокаТабличнойЧасти["процент" + НомерСоответствияТекущейКолонки]       = НовыйПроцент;
КонецЦикла;

КонецПроцедуры //


А вот эти колонки



Пробежался поиском по модулю, закоменнтил везде где есть название ненужной мне колонки

Сообщение отредактировал pablo - 11.09.12, 13:44


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

bereznoy Подменю пользователя
сообщение 12.09.12, 20:23
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Благополучно на основании создает и заполняет мои новые колонки, но после записи документа, при открытии его остаются значения только тех реквизитов, что были раньше, а мои новые колонки пустые,
я так понимаю где то мои колонки не записываются во временную таблицу, подскажите плиз куда смотреть при записи/проведении что б они сохранялись?


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

MATEVI Подменю пользователя
сообщение 12.09.12, 21:47
Сообщение #10

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(bereznoy @ 12.09.12, 21:23) *
Благополучно на основании создает и заполняет мои новые колонки, но после записи документа, при открытии его остаются значения только тех реквизитов, что были раньше, а мои новые колонки пустые,
я так понимаю где то мои колонки не записываются во временную таблицу, подскажите плиз куда смотреть при записи/проведении что б они сохранялись?

Думаю надо смотреть ПРиОткрытии() проц ЗаполнитьТаблицуЦенФормы() и добавить заполнение своих колонок

Спасибо сказали: bereznoy,

bereznoy Подменю пользователя
сообщение 12.09.12, 23:22
Сообщение #11

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Фухх, все получилось, дописал в процедуру ПередЗаписью() запись реквизитов из временную таблицы в "Товары" и в процедуре ЗаполнитьТаблицуЦенФормы() выгрузил
из таблицы товаров в колонки соотвествующие, выкладываю свои процедурки, быть может есть косяки
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

    // Сохраним таблицу значений в табличную часть товаров.
    Товары.Очистить();
    КоличествоСтрок = ТаблицаЦен.Количество() - 1;
    Для Тмп = 0 По КоличествоСтрок Цикл
        СтрокаТаблицыТиповЦен = ТаблицаЦен[Тмп];

        Для Каждого СтрокаТипаЦен Из ТипыЦен Цикл
            НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[СтрокаТипаЦен.ТипЦен];

            НоваяСтрока = Товары.Добавить();
            НоваяСтрока.ИндексСтрокиТаблицыЦен     = Тмп;
            НоваяСтрока.Номенклатура               = СтрокаТаблицыТиповЦен.Номенклатура;
            
            НоваяСтрока.ХарактеристикаНоменклатуры = СтрокаТаблицыТиповЦен.ХарактеристикаНоменклатуры;
            НоваяСтрока.ТипЦен                     = СтрокаТипаЦен.ТипЦен;
            НоваяСтрока.Цена                       = СтрокаТаблицыТиповЦен["цена" + НомерСоответствияТекущейКолонки];
            НоваяСтрока.Валюта                     = СтрокаТаблицыТиповЦен["валюта" + НомерСоответствияТекущейКолонки];
            НоваяСтрока.ЕдиницаИзмерения           = СтрокаТаблицыТиповЦен["единица" + НомерСоответствияТекущейКолонки];
            НоваяСтрока.ПриходнаяЦена = СтрокаТаблицыТиповЦен.ПриходнаяЦена;
            НоваяСтрока.НаценкаТрансп = СтрокаТаблицыТиповЦен.НаценкаТрансп;
            НоваяСтрока.ЦеноваяГруппаНоменклатуры = СтрокаТаблицыТиповЦен.ЦеноваяГруппаНоменклатуры;
        
        КонецЦикла;
    КонецЦикла;

КонецПроцедуры // ПередЗаписью()



и вторая

Процедура ЗаполнитьТаблицуЦенФормы()

    Если ТипыЦен.Количество() = 0 Тогда // ничего делать не надо
        Возврат;
    КонецЕсли;

    ТаблицаТоваров = Товары.Выгрузить();
    ТаблицаТоваров.Сортировать("ИндексСтрокиТаблицыЦен, Номенклатура, ХарактеристикаНоменклатуры");

    ТекущийИндексСтрокиТаблицыЦен = Неопределено;
    НоваяСтрока = Неопределено;
    Для Каждого СтрокаТаблицыТоваров Из ТаблицаТоваров Цикл
        Если ТекущийИндексСтрокиТаблицыЦен <> СтрокаТаблицыТоваров.ИндексСтрокиТаблицыЦен
         Или НоваяСтрока.Номенклатура <> СтрокаТаблицыТоваров.Номенклатура
         Или НоваяСтрока.ХарактеристикаНоменклатуры <> СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры Тогда
            НоваяСтрока = ТаблицаЦен.Добавить();
            НоваяСтрока.Номенклатура = СтрокаТаблицыТоваров.Номенклатура;
            НоваяСтрока.ХарактеристикаНоменклатуры = СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры;
            ТекущийИндексСтрокиТаблицыЦен = СтрокаТаблицыТоваров.ИндексСтрокиТаблицыЦен;
        КонецЕсли;

        НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[СтрокаТаблицыТоваров.ТипЦен];

        НоваяСтрока["цена" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.Цена;
    //    НоваяСтрока["СпособРасчета" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.СпособРасчетаЦены;
        НоваяСтрока["валюта" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.Валюта;
        НоваяСтрока["единица" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.ЕдиницаИзмерения;
    //    НоваяСтрока["процент" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.ПроцентСкидкиНаценки;
    НоваяСтрока.ПриходнаяЦена = СтрокаТаблицыТоваров.ПриходнаяЦена;
    НоваяСтрока.ЦеноваяГруппаНоменклатуры = СтрокаТаблицыТоваров.ЦеноваяГруппаНоменклатуры;
    НоваяСтрока.НаценкаТрансп = СтрокаТаблицыТоваров.НаценкаТрансп;

    
    
        КонецЦикла;

КонецПроцедуры // ЗаполнитьТаблицуЦенФормы()





Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

Спасибо сказали: mariupol,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 16:54
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!