Имя: Пароль:
1C
 
Выделение нескольких строк в табличной части документа
0 katya2
 
02.05.08
19:29
Документ Перемещение ТМЦ, при отсутствии на складе нужного количества товара выводится соответствующий комментарий, документ не проводится. Если табличная часть большая, а наименование товара длинное и несколько наименований отличаются только последними индексами, то получается неудобно смотреть в комментарий, а потом искать нужный товар в табличной части документа.
Пользователь попросил меня каким-то образом выделять в табличной части документа позиции номенклатуры, которых не хватает на складе.
Покопавшися в свойствах, я не нашла такой возможности. Единственное, до чего я додумалась - создать новый реквизит табличной части и в него выводить какой-то знак в строчках нужной номенклатуры. Но и это реализовать у меня пока не получилось.
Подскажите, как лучше решать эту задачу, или ссылку, где она уже решалась.
1 ТелепатБот
 
гуру
02.05.08
19:29
2 Garkin
 
02.05.08
19:43
"создать новый реквизит табличной части и в него выводить какой-то знак в строчках нужной номенклатуры"
Достойный внимания вариант. Почему не получилось?
3 Фокусник
 
02.05.08
19:45
(0) если помечать нужно с возможностью сохранения пометки - то новый реквизит, например число 0 - не помечено, 1 - помечено. Причем визуально лучше текст добавить - плюсики. Устанавливать его в процедуре ПриНачалеРедактирования - определять форма.текущаяколонка(), если нужная колонка, то реквизит = 1 или 0. В отображаемом тексте ?(реквизит = 1, "+", ""). Если чего не понятно - пригласите программиста (:
4 katya2
 
02.05.08
19:48
Не знаю, как записать значение в строку табличной части открытого документа. Почитала форум и поняла, что это делается при записи документа (правда, как делается - не поняла). То есть нужно лезть и редактировать типовые процедуры типа Записать. И подумала, что это как-то криво, не красиво...
Неужели, эта проблема нигде не всплывала?
5 katya2
 
02.05.08
19:53
(3) Помечать нужно просто, чтоб было видно в открытом документе, без сохранения пометок.
Вроде понятно вы написали, попробую так сделать. Только не понятно, когда табличная часть обновится, чтоб плюсики видно стало.

Программиста приглашать не нужно :) Я учусь на базе (копии домашней) магазина моего отца. У них программиста нет, но и запросы маленькие.
6 laeg
 
02.05.08
19:55
(4) Без изменения конфигурации ни как
7 у лю 427
 
02.05.08
20:07
самое простое, без сильного вмешательства
на форму дока под табл частью кладем текст, в него пишем формулу ВЫВОДНАИМЕНОВАНИЯ()

а форму дока добавляем функцию
Функция ВЫВОДНАИМЕНОВАНИЯ()
если пустоеЗначение(LineNum) = 1 тогда возврат ""; конецесли;
если пустоеЗначение(Товар) = 1 тогда возврат "Товар в строке не выбран"; конецесли;
если пустоеЗначение(Товар.ПолнНаименование) = 1 тогда возврат Товар.Наименование;
иначе
возврат Сокрлп(Товар.Наименование) конецесли;
конецФункции


длина поля для вывода текста должна быть на всю ширину дока....
и будет видно полное название товара при перемещении по таб части
8 katya2
 
02.05.08
20:11
(3) Процедура ПриНачалеРедактирования вызывается при попытке редактировать табличную часть.
Мне нужно, чтобы строки выделялись как-то сразу после попытки проведения. Ну в крайнем случае при нажатии какой-то кнопки или галочки.
9 у лю 427
 
02.05.08
20:11
Добавление новой колонки (текстовой) в табличную часть нагляднее, но сложнее
об этом с такими знаниями пока рано думать
10 katya2
 
02.05.08
20:15
(7) А это уже реализовано в типовой. Именно так и сделано - под табличной частью строка с полным наименованием номенклатуры + артикул.
Но все равно приходится бегать туда-сюда курсором по табличной части в поисках нужных товаров, которых нет на складе.
11 katya2
 
02.05.08
20:16
(9) Спасибо :) Буду учиться...
12 у лю 427
 
02.05.08
20:17
если работа с базой ненапряжная - тогда можно сделать проще

на форму в табчасть добавить кнопку Проверить
в табличную часть добавить числовую колонку НЕДОСТАТОЧНО

по кнопке запускается процедура, которая рассчитывает остатки товаров и заполняет колонку НЕДОСТАТОЧНО, но только для тех товаров, которых не хватает. Причем записать нужно ОСТАТОК товара на складе - чтобы юзер сразу видел строки с недостающим товаром и сразу видел, сколько можно отпустить
13 у лю 427
 
02.05.08
20:21
а можно кнопку проверить не добавлять, а в кнопку ОК в формулу в начало добавить вызов процы  #Записать? ПРОВЕРИТЬ() Провести .......

а в процедуре - заполнять колонку, если недостача товара и если была хоть одна недостача, тогда в этой проце следует написать

если ЕстьНедостача > 0 тогда СтатусВозврата(0); конецесли
14 katya2
 
02.05.08
20:25
Спасибо за идею насчет записи остатка!
Как это делать - буду разбираться потихоньку. Пока вопросов больше нет.

офф: Я уже сделала подобную колонку и назвала ее  "Не хватает на складе". Но все конечно не уместилось и осталось только "Не х..."
15 у лю 427
 
02.05.08
20:27
именно нех!!!.....


но учти - это будет давать проколы при интенсивной работе с базой....
16 у лю 427
 
02.05.08
20:31
лень проверять.... это ж 8-ку надо запускать....

так как там в доке написано, Дмитрий Сергеевич? По полной схеме или по сокращенной....?
17 у лю 427
 
02.05.08
20:31
пардон - не туда влепил....
18 Мимохожий Однако
 
02.05.08
21:06
Было бы интереснее добавить дополнительную печатную форму, в которой бы выводился список товара, которого не хватает. Там же можно показать сколько не хватает. Формировать, если вдруг не проводится документ :-)
19 у лю 427
 
02.05.08
21:08
для активной работы это не актуально...
хотя не повредит для общего случая....
20 dk
 
02.05.08
21:14
колонка или наименование конечно интересно, но может достаточно будет выводить номер строки в комментариях?
21 DigitalDolphin
 
02.05.08
22:13
Привет Катя :) ... или Катерина :)

На самом деле твоя проблема решаеться просто.. в момент проведения (процедура ОбработкаПроведения() - модуль проведения) ищещь место где отслеживает недостача товара и в этом месте пишешь код для пометки строки звездочкой, плюсиком или еще чего... конкретно код написать не могу, нужна конфигурация.
Кстати если изменять документ в процедуре ОбработкаПроведения(), то изменения автоматически сохраняться :) Более подробно без конфы я тебе не напишу, так что удачи..
22 у лю 427
 
02.05.08
23:27
(21) вообще то моветон из модуля документа писать в док - но в данном случае не очень страшно....

P.S. вряд ли она найдет - опыта маловато
23 katya2
 
04.05.08
16:25
Сделала! Может, кому-то пригодится.
Добавила в документ ПеремещениеТМЦ дополнительный реквизит и соотв. колонку в табличной части ОстатокНаСкладе. В ней просто вывожу остаток выбранной номенклатуры на выбранном складе.
Сделала так: в модуле формы документа написала функцию:

******************************************************************************  
// ОстатокНаВыбранномСкладе(ТекНоменклатура, СкладОтправитель)
// Описание:
// Заполняет столбец КоличествоНаСкладе в табличной части документа. Показывает количество номенклатуры, находящейся в данный момент на складе
//
Функция ОстатокНаВыбранномСкладе(ТекНоменклатура, СкладОтправитель)            

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


А внутри функции ПриИзмененииНоменклатуры() в самом конце добавила строку:

КоличествоНаСкладе = ОстатокНаВыбранномСкладе(Номенклатура, Склад);


Если что-то неграмотно или некрасиво, прошу поправить.
24 DigitalDolphin
 
04.05.08
18:53
Ну в принципе конечно своей цели ты добилась, но грамотным решение назвать нельзя. По сути то что ты сделала есть метод регистра который это как раз выполняет твою задачу. И ты могла написать ОстаткиТМЦ.СводныйОстаток(-"Правильно указываешь параметры"-) :-)

СводныйОстаток(<?>,)
Синтаксис:
СводныйОстаток(<Измерен1>,<Измерен2>...,<ИмяРесурса>)
Назначение:
Возвращает значение сводного остатка заданного ресурса регистра.
Параметры:
<Измерен1>,<Измерен2>... - значения измерений регистра;
<ИмяРесурса> - название требуемого ресурса регистра.
Замечание:
Измерения могут задаваться с пропусками (неуказанное значение - просто запятая), фиксируются только указанные измерения. Метод используется только для регистров остатков.
25 DigitalDolphin
 
04.05.08
18:57
Да... Катерина хорошего сына Егора воспитываешь.. Молодец :-)
26 katya2
 
05.05.08
13:30
Спасибо! Переделала с функцией СводныйОстаток, все работает.
27 DigitalDolphin
 
05.05.08
22:56
Катерина... Выходи на связь в Mail.ru через агент... пообщаемся.
Мой адрес imgsrc_dd@mail.ru    Жду :-)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший