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

Хранилище

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

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



> Создание нескольких заказов поставщику , Конфигурация УТ 2.3 для Украины          
Fabri Подменю пользователя
сообщение 21.01.14, 15:31
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0

Добрый день всем. Подскажите пожалуйста что правильней использовать в моем случае.
Написал обработку, суть её в том чтобы автоматически создавать заказы поставщикам если количество товара на складе ниже установленного.
Есть таблица Товары, с полями - Код, Номенклатура, Количество, Поставщик1, Поставщик2, Поставщик3.
Запросом выводятся все данные в таблицу с этим все ок.

Теперь создал кнопочку которая должна создать документы Заказ покупателю, но вывести строки с поставщиком в нужный документ.
Пример:
Код Номенклатура Количество Поставщик1 Поставщик2 Поставщик3
Строка1: Тесттовар1 2 Иванов Сидоров
Строка2: Тесттовар2 5 Сидоров
Строка3: Тестовар3 6 Василье Иванов

Необходимо чтоб создавались документы Заказ поставщику.
Получается у нас будет: документ с поставщиком Иванов, в котором будут 1 и 3 строка.
Документ с поставщиком Сидоров в котором будут 1 и 2 записи, и т.д.

// Здесь незнаю что использовать Массив, структуру, соответствие или список значений
    Для Каждого Строка ИЗ Товары Цикл
                
    КонецЦикла;


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

logist Подменю пользователя
сообщение 21.01.14, 15:54
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Fabri Подменю пользователя
сообщение 21.01.14, 16:03
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0

Проблема в том что мне нужно выводить в таблицу данные именно в том виде как писал выше.
Юзер в таблице сможет менять количество для всей номенклатуры, а потом уже просто формируются заказы на каждого поставщика.

Вот код запроса:
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    УстановкаОстатковНоменклатурыСрезПоследних.Номенклатура.Код КАК Код,
        |    УстановкаОстатковНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
        |    УстановкаОстатковНоменклатурыСрезПоследних.Остаток КАК Количество,
        |    УстановкаОстатковНоменклатурыСрезПоследних.Номенклатура.ОсновнойПоставщик КАК Поставщик1,
        |    УстановкаОстатковНоменклатурыСрезПоследних.Номенклатура.ДопПоставщик1 КАК Поставщик2,
        |    УстановкаОстатковНоменклатурыСрезПоследних.Номенклатура.ДопПоставщик2 КАК Поставщик3
        |ИЗ
        |    РегистрСведений.УстановкаОстатковНоменклатуры.СрезПоследних КАК УстановкаОстатковНоменклатурыСрезПоследних
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        |        ПО УстановкаОстатковНоменклатурыСрезПоследних.Остаток > ТоварыНаСкладахОстатки.КоличествоОстаток";

    Результат = Запрос.Выполнить();
    Товары.Загрузить(Запрос.Выполнить().Выгрузить());

Ardi Подменю пользователя
сообщение 21.01.14, 16:56
Сообщение #4

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

В работе программиста есть один существенный недостаток. Чтобы что-нибудь напрограммировать, приходится программировать.


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

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

Fabri Подменю пользователя
сообщение 21.01.14, 19:46
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 188
Спасибо сказали: 56 раз
Рейтинг: 0

Ardi, я считаю что Ваш ответ не имеет отношения к данной теме. Если Вас "задел" мой ответ в созданной Вами теме, то я повторюсь что не хотел никого обижать, и не ставил под сомнения уровень квалификации кого-либо на данном форуме.
Возможно кто-то решал вопросы такого типа, буду рад помощи.

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

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

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


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

Vofka Подменю пользователя
сообщение 21.01.14, 20:10
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Не вижу никаких проблем. Для начала делаете функцию типа такой:

Функция ПолучитьТаблицуНоменклатуры()

   Таблица = Новый ТаблицаЗначений();
   Таблица.Колонки.Добавить("Номенклатура");
   Таблица.Колонки.Добавить("Количество");

   Возврат Таблица;

КонецФункции


Потом в том месте, где нужно обработать полученную из запроса таблицу пишем что-то вроде этого:

ДанныеДляЗаказов = Новый Соответствие;

Для Каждого Строка ИЗ ТаблицаТоваров Цикл // ТаблицаТоваров - это то, что получили по запросу

    Если ЗначениеЗаполнено(Строка.Поставщик1) Тогда
        Если ДанныеДляЗаказов.Получить(Строка.Поставщик1) = Неопределено Тогда
            ДанныеДляЗаказов.Вставить(Строка.Поставщик1, ПолучитьТаблицуНоменклатуры());
        КонецЕсли;
        НоваяСтрока = ДанныеДляЗаказов[Строка.Поставщик1].Добавить();
        НоваяСтрока.Номенклатура = Строка.Номенклатура;
        НоваяСтрока.Количество = Строка.Количество;
    КонецЕсли;

    Если ЗначениеЗаполнено(Строка.Поставщик2) Тогда
        // аналогично тому, что выше
    КонецЕсли;

    Если ЗначениеЗаполнено(Строка.Поставщик3) Тогда
        // аналогично тому, что выше
    КонецЕсли;

КонецЦикла;

// теперь формируем заказы

Для Каждого Строка ИЗ ДанныеДляЗаказов Цикл

    // Строка.Ключ - тут будет контрагент
    // Строка.Значение - тут будет таблица значений с товарами

КонецЦикла


Сообщение отредактировал Vofka - 21.01.14, 20:12

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

Домовик Подменю пользователя
сообщение 21.01.14, 20:59
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

я в восмерке конечно турок (да и вообще), но можно ж вроде три запроса объединить (запросы будут отличаться только соответств измерением поставщика), обозвать одним полем Поставщик, потом в итоговом запросе Группировки по Поставщику, Номенклатуре..

ну на этапе еще запроса нельзя все укомплектовать?

Сообщение отредактировал Домовик - 21.01.14, 21:03

Vofka Подменю пользователя
сообщение 21.01.14, 21:36
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Домовик,
Цитата(Fabri @ 21.01.14, 16:03) *
Проблема в том что мне нужно выводить в таблицу данные именно в том виде как писал выше.


Егор Динин Подменю пользователя
сообщение 21.01.14, 23:51
Сообщение #10

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1454
Из: Киев
Спасибо сказали: 550 раз
Рейтинг: 0

Цитата(Fabri @ 21.01.14, 15:31) *
автоматически создавать заказы поставщикам если количество товара на складе ниже установленного.

Вообще-то в отчете по точке заказа в типовом функционале это реализовано...

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

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


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

 

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