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

Хранилище

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

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



> Добавление товара из табчасти документа          
danie Подменю пользователя
сообщение 16.12.09, 11:09
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 219
Из: Полтава
Спасибо сказали: 38 раз
Рейтинг: 0

Переделываю обработку для печати этикеток на термопринтере.
В ее табчасть (список товаров для печати) товар набирается из самого справочника номенклатуры. Хочу сделать, чтобы можно было туда кинуть перечень товаров из табчасти документа - Перемещение товаров, Приходная накладная и т.п. Семерку совсем плохо знаю... Как можно реализовать?
ЗЫ Кроме того, надо в цикле по названию (коду) товара в табчасти дока определять его штрих-код (для печатной формы обработки).

[необходимо зарегистрироваться для просмотра ссылки]


Signature
Новый Орбит "Ай, бля!" со вкусом языка

MATEVI Подменю пользователя
сообщение 16.12.09, 13:41
Сообщение #2

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

//Ну типа того ... Хотя размыта задача ...
//Как понял так и зробыв smile.gif
//Это вариант по всем документам которые есть в базе

Процедура ДобавитьТоварВСписок()
Перем ТипФормы;
Меню = СоздатьОбъект("СписокЗначений");
Меню.ДобавитьЗначение(1,"По справочнику");
Меню.ДобавитьЗначение(2,"По документам");
Если Меню.ВыбратьЗначение(ТипФормы,"",,,1) <> 1 Тогда
Возврат;
КонецЕсли;
Если ТипФормы=1 Тогда

Спр=СоздатьОбъект ("Справочник.Номенклатура");
Спр.ВыборГруппы(1);
Если Спр.Выбрать("Добавить товар", "ФормаСписка")=1 Тогда;

//Сообщить("Количество строк в табл: "+ВыбТабл.КоличествоСтрок());

Если Спр.ЭтоГруппа()=1 Тогда

Спр.ИспользоватьРодителя(Спр.ТекущийЭлемент(),1);
Спр.ВыбратьЭлементы();

Пока (Спр.ПолучитьЭлемент()=1) Цикл
Если (ВыбТабл.НайтиЗначение(Спр.ТекущийЭлемент(),,Товар)=0) и (Спр.ЭтоГруппа()=0) Тогда
ВыбТабл.НоваяСтрока();
ВыбТабл.Товар=Спр.ТекущийЭлемент();
ВыбТабл.Наименование=Спр.ТекущийЭлемент();

//Сообщить("Товар: "+Спр.ТекущийЭлемент()+" Скидка: "+Спр.ТекущийЭлемент().Скидка.Получить(ТекущаяДата()));
КонецЕсли;
КонецЦикла;
Иначе
Если (ВыбТабл.НайтиЗначение(Спр.ТекущийЭлемент(),,Товар)=0) и (Спр.ЭтоГруппа()=0) Тогда
ВыбТабл.НоваяСтрока();
ВыбТабл.Товар=Спр.ТекущийЭлемент();
ВыбТабл.Наименование=Спр.ТекущийЭлемент();

//Сообщить("Товар: "+Спр.ТекущийЭлемент()+" Скидка: "+Спр.ТекущийЭлемент().Скидка.Получить(ТекущаяДата()));
КонецЕсли;
КонецЕсли;

КонецЕсли;
Спр=0;

Иначе
СпДок = СоздатьОбъект("СписокЗначений");
СпДок.ДобавитьЗначение("Перемещение");
СпДок.ДобавитьЗначение("Приходнаянакладная");//добавить идент. необходимых еще доков

Если ВыбТабл.КоличествоСтрок()>0 Тогда
ВыбТабл.УдалитьСтроки();
КонецЕсли;
ТабЗн = СоздатьОбъект("ТаблицаЗначений");
ТабЗн.НоваяКолонка("Товар");

Для А=1 По СпДок.РазмерСписка() Цикл
Док = СоздатьОбъект("Документ."+СпДок.ПолучитьЗначение(А));
Док.УстановитьФильтр(1,0);
Док.ВыбратьДокументы();// ВыбратьДокументы(<Дата1>,<Дата2>) даты надо или нет?
Пока Док.ПолучитьДокумент()=1 Цикл
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
ТабЗн.НоваяСтрока();
ТабЗн.Товар=Док.ТМЦ;

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

//если это торговля тогда помоему ТабЗн.Товар=Док.Товар; надо смотреть как ревизиты таб части обзываются
//ограничить датами бо если много документов долго будет.
// вообщем поставь задачу более четко.

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

danie Подменю пользователя
сообщение 16.12.09, 13:56
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 219
Из: Полтава
Спасибо сказали: 38 раз
Рейтинг: 0

MATEVI, как всегда выручаешь! ))) спасибо большое!
ЗЫ конфа ТиС 5-й


Signature
Новый Орбит "Ай, бля!" со вкусом языка

MATEVI Подменю пользователя
сообщение 16.12.09, 14:05
Сообщение #4

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

Цитата(danie @ 16.12.09, 14:56) *
MATEVI, как всегда выручаешь! ))) спасибо большое!
ЗЫ конфа ТиС 5-й

Бывает smile.gif Что то я от количества работы наверно, не понимаю некоторых простых вопросов.smile.gif

Вот еще например не понимаю зачем там наименование??? ВыбТабл.Наименование Это типовое?

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

Завсегдатай
****
Группа: Пользователи
Сообщений: 219
Из: Полтава
Спасибо сказали: 38 раз
Рейтинг: 0

По всем документам это круто... А выбрать конкретный? например, из складских: Перемещение, номер хххххх123

СпДок = СоздатьОбъект("СписокЗначений");
СпДок.ДобавитьЗначение("Перемещение");
// выбираю конкретный
СпДок.ДобавитьЗначение("Приходнаянакладная");
// выбираю конкретный


Signature
Новый Орбит "Ай, бля!" со вкусом языка

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

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

Цитата(danie @ 16.12.09, 15:10) *
По всем документам это круто... А выбрать конкретный? например, из складских: Перемещение, номер хххххх123

СпДок = СоздатьОбъект("СписокЗначений");
СпДок.ДобавитьЗначение("Перемещение");
// выбираю конкретный
СпДок.ДобавитьЗначение("Приходнаянакладная");
// выбираю конкретный


.....
Меню.ДобавитьЗначение(3,"По конкретному документу");
....
//Иначе меняем на
ИначеЕсли ТипФормы=2 Тогда
.....
ТабЗн.Выгрузить(ВыбТабл);
Иначе
Если ВыбТабл.КоличествоСтрок()>0 Тогда
ВыбТабл.УдалитьСтроки();
КонецЕсли;
Если ВвестиЗначение(ТекДок,"Выберите документы","Документ")=1 Тогда
ТекДок.ВыбратьСтроки();
Пока ТекДок.ПолучитьСтроку()=1 Цикл
//в случае если дубли строк не разрешены можно не сворачивать
//по товарам в табзн как выше
ВыбТабл.НоваяСтрока();
ВыбТабл.Товар = ТекДок.Товар;
ВыбТабл.Наименование = ТекДок.Товар.Наименование;
КонецЦикла;
КонецЕсли;

//Как вариант
Если ВвестиЗначение(ТекДок,"Выберите документы","Документ.ПриходнаяНакладная")=1 Тогда
//будут только приходы
//или ","Документ. "+Идент где идент конкретный док. Но тута надо думать

danie Подменю пользователя
сообщение 16.12.09, 14:22
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 219
Из: Полтава
Спасибо сказали: 38 раз
Рейтинг: 0

Цитата(MATEVI @ 16.12.09, 15:05) *
Вот еще например не понимаю зачем там наименование??? ВыбТабл.Наименование Это типовое?

Действительно нафиг не нужно.


Signature
Новый Орбит "Ай, бля!" со вкусом языка

MATEVI Подменю пользователя
сообщение 16.12.09, 15:02
Сообщение #8

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

Цитата(danie @ 16.12.09, 15:22) *
Действительно нафиг не нужно.

Тогда смотри определение колонок ВыбТабл
И ВыбТабл.ВидимостьКолонки("Товар",0);//она не видна

danie Подменю пользователя
сообщение 17.12.09, 13:57
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 219
Из: Полтава
Спасибо сказали: 38 раз
Рейтинг: 0

Готово



Процедура ДобавитьТоварВСписок()
Перем ТипФормы;
Меню = СоздатьОбъект("СписокЗначений");
Меню.ДобавитьЗначение(1,"По справочнику");
Меню.ДобавитьЗначение(2,"По документам");
Если Меню.ВыбратьЗначение(ТипФормы,"",,,1) <> 1 Тогда
Возврат;
КонецЕсли;
Если ТипФормы=1 Тогда

Спр=СоздатьОбъект ("Справочник.Номенклатура");
Спр.ВыборГруппы(1);
Если Спр.Выбрать("Добавить товар", "ФормаСписка")=1 Тогда;

Если Спр.ЭтоГруппа()=1 Тогда

Спр.ИспользоватьРодителя(Спр.ТекущийЭлемент(),1);
Спр.ВыбратьЭлементы();

Пока (Спр.ПолучитьЭлемент()=1) Цикл
Если (ВыбТабл.НайтиЗначение(Спр.ТекущийЭлемент(),,Товар)=0) и (Спр.ЭтоГруппа()=0) Тогда
ВыбТабл.НоваяСтрока();
ВыбТабл.Товар=Спр.ТекущийЭлемент();
КонецЕсли;
КонецЦикла;
Иначе
Если (ВыбТабл.НайтиЗначение(Спр.ТекущийЭлемент(),,Товар)=0) и (Спр.ЭтоГруппа()=0) Тогда
ВыбТабл.НоваяСтрока();
ВыбТабл.Товар=Спр.ТекущийЭлемент();
ВыбТабл.Наименование=Спр.ТекущийЭлемент();

КонецЕсли;
КонецЕсли;
КонецЕсли;

Спр=0;

Иначе
ТекДок = СоздатьОбъект("СписокЗначений");
ТекДок.ДобавитьЗначение("Перемещение");
ТекДок.ДобавитьЗначение("Приходнаянакладная");

Если ВыбТабл.КоличествоСтрок()>0 Тогда
ВыбТабл.УдалитьСтроки();
КонецЕсли;
ТабЗн = СоздатьОбъект("ТаблицаЗначений");
ТабЗн.НоваяКолонка("Товар");

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

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



Signature
Новый Орбит "Ай, бля!" со вкусом языка

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

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

Цитата(danie @ 17.12.09, 14:57) *
Готово

ТекДок = СоздатьОбъект("СписокЗначений");
ТекДок.ДобавитьЗначение("Перемещение");
ТекДок.ДобавитьЗначение("Приходнаянакладная");

Это не надо. Ты же не задаешь в ввестизначение конкретный вид документа. И открывается выбор у тебя в полном журнале по всем документам

ТабЗн = СоздатьОбъект("ТаблицаЗначений");ТабЗн.НоваяКолонка("Товар");

Это тоже лишнее если дублей товаров в строках документа нет.
Сразу добавляй ТОвар в ВыбТабл

ЗЫ Кстати если бы ндо было по всем документам определенных видов
то можно было запросом сделать. Было бы быстрее.. Но если не надо то и "париться" не будем. smile.gif

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

danie Подменю пользователя
сообщение 17.12.09, 14:55
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 219
Из: Полтава
Спасибо сказали: 38 раз
Рейтинг: 0

немного переделал по советам. все путем - пускай работает! спс большое!


Signature
Новый Орбит "Ай, бля!" со вкусом языка

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


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

 

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