Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1C Программирование и поддержка

Модерирует : ShIvADeSt

ShIvADeSt (30-10-2009 09:51): http://forum.ru-board.com/topic.cgi?forum=33&topic=10715  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тема для программирования 1С!!!
Это продолжение темы, предыдущие части доступны тут


ПРОГРАММЫ  1С:Предприятие 1C - 1C: Вопросы по конфигурациям

ВАРЕЗНИК   1C:Предприятие 7.7 - 1С:Предприятие v.8.x - 1C Диск ИТС - 1С: Совместимо 8.х

Топик 1C Ebooks
ЗДЕСЬ  (обновлено 17.10.2009) - небольшая библиотечка (книги, документация, видео, утилиты) по 1С, финансам, бухучету и т.п.
Все рассортировано по версиям...


Для заблудившихся в трех соснах >>> FAQ по форуму RU.Board
 
Предыдущие темы были здесь часть 4 | часть 3 | часть 1
 
Как убить рекламу при обновлении отчетности | конфигурации (ИБ)?

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:02 03-04-2009 | Исправлено: vkramnik, 12:06 23-10-2009
fol



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OJIR тебе не нужно их перезаписывать. Ставишь у документа признак "Удалять движения автоматически", а проводки пишешь как новые

Цитата:
Для каждого ТекСтрокаПродукция Из Продукция Цикл          
    Движение = Движения.ОстаткиНаСкладеГотовойПродукции.Добавить();  
    Движение.Регистратор  = Ссылка;
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;  
    Движение.Номенклатура = ТекСтрокаПродукция.Номенклатура;  
    Движение.Период = ЭтотОбъект.Дата;  
    Движение.Количество = ТекСтрокаПродукция.Количество;  
    Движение.СрокХранения = ТекСтрокаПродукция.СрокХранения;          
КонеЦикла;

Только в случае если документ ДанныеОСрокеХранения существует - сразу заполняешь нужные тебе реквизиты (просрочено, решение)

Всего записей: 805 | Зарегистр. 02-11-2002 | Отправлено: 12:00 02-10-2009
dimaxmaster

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
St01en

Цитата:
О! Это мысль. Только по какому признаку сравнивать? Если сравнивать просто Операция1 = Операция2, то совпадений не будет, потому что номера разные. Вот не могу я найти определенный признак для сравнения.  

 
Я просто не пойму. Если стоит задача сравнивать ручную операцию с ручной операцией, то признаком сравнения может быть либо сумма, либо содержание операции(заранее предусмотренное), либо проводки операции(но тут много особенностей). Если же нужно отследить какой-то документ(а любой документ создает операцию), то надо операции вообще не трогать, а работать с документами. А как на самом деле?

Всего записей: 333 | Зарегистр. 05-06-2008 | Отправлено: 14:01 02-10-2009
St01en

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dimaxmaster
Нужно сравнивать ручную операцию с ручной операцией. Трабла в том, что суммы могут быть одинаковые, как и даты. Придется сравнивать по содержанию, сумме и дате операции, чтоб уж наверняка. Над содержанием только надо подумать...

Всего записей: 292 | Зарегистр. 10-04-2006 | Отправлено: 14:19 02-10-2009
Alltn_44

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SergeiS
Проверьте почтовый ящик.

Всего записей: 250 | Зарегистр. 07-01-2008 | Отправлено: 14:41 02-10-2009
dias65



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
St01en

Цитата:
Документ
Синтаксис:
Документ
Назначение:
Атрибут служит для обращения к документу, котрому принадлежит бухгалтерская операция. Является атрибутом ''только для чтения''.
Т.е. установить сей атрибут вручную никак не удастся. И использовать его для сравнения ручных операций бессмыслено.
Может, проводить через какой-либо транзитный счет с подходящей аналитикой.  

Всего записей: 277 | Зарегистр. 28-11-2006 | Отправлено: 16:40 02-10-2009 | Исправлено: dias65, 16:44 02-10-2009
dimaxmaster

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
St01en
 

Цитата:
Придется сравнивать по содержанию, сумме и дате операции, чтоб уж наверняка. Над содержанием только надо подумать...

 
другого выхода нет, сумма, период дат, содержание, только так. гемор еще тот

Всего записей: 333 | Зарегистр. 05-06-2008 | Отправлено: 16:54 02-10-2009
St01en

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dimaxmaster
Да, сделал уже. В Содержание вставил номер документа. Лучший вариант. Но все равно идиотизм, не предусмотреть признак для ручных проводок.

Всего записей: 292 | Зарегистр. 10-04-2006 | Отправлено: 17:12 02-10-2009 | Исправлено: St01en, 17:13 02-10-2009
An4eus



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
St01en
Цитата:

Код:
Операция.ВыбратьОперации(НачМесяца(ТекущаяДата()), КонМесяца(ТекущаяДата()));
    Пока Операция.Получить() = 1 Цикл
        Если (Операция.Документ = ДокОсн) и (Операция.Сумма = СумСп) Тогда
            Предупреждение("Списание по этой страховке в "+ ДатаМесяц(ТекущаяДата())+" уже проводилось");
            Возврат;
        КонецЕсли;
    КонецЦикла;
что это? никому больше не показывай!
1. забей на сумму операции - это тупо информация
2. какой ты док всё пытаешься вставить в операцию, если она у тебя ручная?

----------
Век живи - век учись!

Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 17:26 02-10-2009
OJIR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fol
Реквизит "Решение" может принимать одно из двух значений - в переработку (обратно в производство), в утилизацию (выкинуть на всегда в мусорку).
Решение ставится пользователем в документе "ДанныеОСрокеХранения", после чего решение записывается в реквизит "Решение" регистра накопления .
Предлагаемый тобой способ

Цитата:
сразу заполняешь нужные тебе реквизиты (просрочено, решение)

позволяет ставить только конкретное значение. А откуда я знаю какое там было решение.

 

Всего записей: 52 | Зарегистр. 07-01-2008 | Отправлено: 10:23 03-10-2009
fol



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OJIR как понять откуда знаю? Ты поиском находишь документ ДанныеОСрокеХранения (док., у которого основание твой документ) и из него читаешь какое решение пользователь в нем установил. После этого пишешь в регистр.

Всего записей: 805 | Зарегистр. 02-11-2002 | Отправлено: 10:56 03-10-2009
OJIR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fol
Спасибо!!! Сделала.

Всего записей: 52 | Зарегистр. 07-01-2008 | Отправлено: 16:20 03-10-2009
egerLESHIK



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
 
Ситуация такого плана по 1С Торговля и Склад 7.7 (переписанная). Пытаюсь создать новый документ в конфигурации  - Расходная накладная для Розницы.
В модуле документа, по аналогии с обычной расходной накладной да и приходной также создаю такой код:  
 

Код:
Процедура Подбор()  
 
    Если КатегорияЦены.Выбран() = 0 Тогда
        Предупреждение ("Не выбрана категория цен! Укажите цену розничной продажи!");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    Если СокрЛП(глПользователь.КодыПодразделений) = "" Тогда  
    ОткрытьПодбор("ТМЦ",?(сзЮЗЕР.Получить("ПОДБОР_БЕЗ_ГРУПП") = 1,"ДляВыбораБезГрупп","ДляВыбора"),Контекст);
        фПоказатьОст=0;
    КонецЕсли;    
КонецПроцедуры // Подбор  
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
//*//
Процедура ОбработкаПодбора(Выб)  
    Если глОбработатьПодбор(Контекст,Выб,1) = 1 Тогда
        глПриИзмененииТовара(Контекст);
        АктивизироватьСтроку();
        ИзмТМЦ();
        Кол = Количество;
        ИзмКво();
 
    КонецЕсли;
 
    Кол = 1;
    Если Константа.ЗапрашиватьКоличество = Да Тогда
        Если ВвестиЧисло(Кол,"Введите количество",12,3) = 0 Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;
                      
    НоваяСтрока();  
    Количество = Кол;                    
    Если Выб.Вид()="ТМЦ" Тогда
 
        ТМЦ = Выб;  
        Ед = ТМЦ.ЕдиницаПоУмолчанию;
        Цена = глВернутьЦену(ТМЦ,КатегорияЦены,ДатаДок);
 
    КонецЕсли;
 
    ИзмТМЦ();        
КонецПроцедуры
 

 
Да вот косяк почему-то выскакивает при нажатии на кнопку Подбор, а именно вызов процедуры Подбор():
 

Цитата:
тзВыбТМЦ.Свернуть(тзВыбТМЦ,"ТМЦ,Кво");
{Справочник.ТМЦ.ФормаСписка.ДляВыбора.Модуль(419)}: Значение не представляет агрегатный объект (Свернуть)

 
Как понятно из цитаты - это ошибка в коде справочника имеющая форму списка ДляВыбора. Но на что она ругается? Вот в чем вопрос...
 
Добавлено:
Собственно процедура в справочнике где стопорится ошибка на строке 419:
Процедура ПриВыбореРодителя(Элемент)
 
КонецПроцедуры
 

Код:
Процедура ПриОткрытии()
    
    Форма.ОбработкаВыбораСтроки(1);
    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
        ВнКонтекст = Форма.Параметр;
        фВнКонтекст = 1;
        ЗаполнитьФорму (ВнКонтекст);
        ВнКонтекст.ВыгрузитьТабличнуюЧасть (тзВыбТМЦ,"ТМЦ,Кво");
        тзВыбТМЦ.Свернуть(тзВыбТМЦ,"ТМЦ,Кво");
        
        
    Иначе
        фВнКонтекст = 0;
        ЗаполнитьФормуПоУмолчанию();        
    КонецЕсли;            
    Активизировать("Наименование", 0);
                   
    Если (Константа.ИспользоватьСкладМикс = Да) и (ВыбСклад.РежимМикс = 1) Тогда
        фСтатОст = 1;
    Иначе
        фСтатОст = сзЮЗЕР.Получить("ПОДБОР_СТАТИЧЕСКИЕ_ОСТАТКИ");
    КонецЕсли;
    
    Если Константа.ПрограммируемаяМиграция = 0 Тогда
        Если (фСтатОст =1) и (сзЮЗЕР.Получить("ИСПОЛЬЗОВАТЬ_TOYSQL") = 1) Тогда
            ИзмПериодОстатковSQL ();
        Иначе
            ИзмПериодОстатков();    
        КонецЕсли;          
    КонецЕсли;
    
    ЗначФлага =ВосстановитьЗначение("ТМЦ_флагПоказаКодаРучнойПодачи");
                                                                   
    Если ПустоеЗначение(ЗначФлага) = 1 Тогда
        флагПоказаКодаРучнойПодачи = 0;
    ИначеЕсли (ЗначФлага = 1) Тогда
        флагПоказаКодаРучнойПодачи = 1;
    Иначе
        флагПоказаКодаРучнойПодачи = 0;
    КонецЕсли;                          
    
    ПриИзмененииФлагаПоказаКодаРучнойПодачи();
    
    ТочностьКво = ?(сзЮЗЕР.Получить("ПОДБОР_ДРОБНОЕ_КВО") = 1, 3, 0);
    
КонецПроцедуры    // ПриОткрытии  


Всего записей: 950 | Зарегистр. 24-03-2004 | Отправлено: 15:39 04-10-2009 | Исправлено: egerLESHIK, 17:15 04-10-2009
fol



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У тебя по какой-то причине тзВыбТМЦ не имеет тип ТаблицаЗначений, встань в отладчике на этой строке и посмотри что и как.

Всего записей: 805 | Зарегистр. 02-11-2002 | Отправлено: 18:05 04-10-2009
egerLESHIK



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
У тебя по какой-то причине тзВыбТМЦ не имеет тип ТаблицаЗначений, встань в отладчике на этой строке и посмотри что и как.

 
Да у меня тоже что-то такая мысль возникла, но что конкретно отлавливать отладчиком, что смотреть? Ума не приложу.

Всего записей: 950 | Зарегистр. 24-03-2004 | Отправлено: 18:25 04-10-2009
fol



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
на этой строке остановись

Цитата:
тзВыбТМЦ.Свернуть(тзВыбТМЦ,"ТМЦ,Кво");

Shift+F9 и напиши ТипЗначенияСтр(тзВыбТМЦ), что выдает? Если ТаблицаЗначений, можно попробовать тзВыбТМЦ.ВыбратьСтроку()

Всего записей: 805 | Зарегистр. 02-11-2002 | Отправлено: 19:12 04-10-2009
egerLESHIK



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fol

Цитата:
Shift+F9 и напиши ТипЗначенияСтр(тзВыбТМЦ)

 
Хм, результат таков: ТипЗначенияСтр(тзВыбТМЦ) = ""

Всего записей: 950 | Зарегистр. 24-03-2004 | Отправлено: 19:45 04-10-2009
fol



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
очевидно, эта строка не выполнилась

Цитата:
ВнКонтекст.ВыгрузитьТабличнуюЧасть (тзВыбТМЦ,"ТМЦ,Кво");

тут 2 варианта: либо ей не понравились колонки (имена не совпали), либо переменная ВнКонтекст не имеет тип Контекст документа.

Всего записей: 805 | Зарегистр. 02-11-2002 | Отправлено: 21:16 04-10-2009
egerLESHIK



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скорее, что колонка не понравилась. Посмотрел по двум документам которые были в справочнике зафиксированы, у них количество именовалось Идентификатором Кво, в моем новом документе же было Количество. Заменил на Кво и все заработало. Благодарствую за наставление на путь истинный.

Всего записей: 950 | Зарегистр. 24-03-2004 | Отправлено: 22:56 04-10-2009
Mont1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем ПРИВЕТ!
У меня возник такой вопрос.
Есть таблица значений, в есть несколько колонок среди которых колонка
ТаблГр.НоваяКолонка("PCODE", "Строка", 100);
Далее в цикле
НомСтроки=0;
ПолныйКодГруппы=Группа.ПолныйКод();
Если ТаблГр.НайтиЗначение(ПолныйКодГруппы,НомСтроки,"PCODE")=0 Тогда
ТаблГр.НоваяСтрока();
ТаблГр.PCODE=ПолныйКодГруппы;
...
КонецЕсли;

Почему-то получается так, что метод НайтиЗначение никогда ничего не находит,
хотя одинаковые значения там есть.
Кто-нибудь может подсказать, почему так?
    

Всего записей: 49 | Зарегистр. 15-10-2008 | Отправлено: 06:45 05-10-2009
fol



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mont1 ты жестко задал тип для колонки, соответственно когда ты записываешь туда полный код, он дополняется пробелами до 100 символов. Потом когда ты ищешь коды и не совпадают. Сделай просто ТаблГр.НоваяКолонка("PCODE);

Всего записей: 805 | Зарегистр. 02-11-2002 | Отправлено: 07:58 05-10-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1C Программирование и поддержка
ShIvADeSt (30-10-2009 09:51): http://forum.ru-board.com/topic.cgi?forum=33&topic=10715


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru