Имя: Пароль:
1C
1C 7.7
v7: Просто инфо кто еще на 77 ТиС, дырка в коде... глДвижениеОборотовПродаж
0 Злопчинский
 
25.04.20
16:06
Просто инфо, м.б. кому пригодится старым мохнатым мамонтам
ГМ, добавить в код типовой процедуры отбитое маркером //ДОБАВЛЕНО НЕТИПОВОЕ
.
Процедура глДвижениеОборотовПродаж(Конт,
                                Фирма,
                                Контрагент,
                                Поставщик,
                                Номенклатура,
                                Количество,
                                Себестоимость,
                                ПродСтоимость) Экспорт
    
    РегПродажи = Конт.Регистр.Продажи;
    
    // измерения
    РегПродажи.Фирма        = Фирма;
    РегПродажи.Поставщик     = Поставщик;
    РегПродажи.Покупатель     = Контрагент;
    РегПродажи.Номенклатура = Номенклатура;
    // ресурсы      
    Если Количество >= 0 Тогда
        РегПродажи.Себестоимость = Себестоимость;
        РегПродажи.ПродСтоимость = ПродСтоимость;
        РегПродажи.Количество      = Количество;
        
        //ДОБАВЛЕНО НЕТИПОВОЕ
        РегПродажи.СебестоимостьВ     = 0;
        РегПродажи.ПродСтоимостьВ     = 0;
        РегПродажи.КоличествоВ         = 0;
        //ДОБАВЛЕНО НЕТИПОВОЕ
    Иначе                                
        РегПродажи.СебестоимостьВ = - Себестоимость;
        РегПродажи.ПродСтоимостьВ = - ПродСтоимость;
        РегПродажи.КоличествоВ       = - Количество;
        
        //ДОБАВЛЕНО НЕТИПОВОЕ
        РегПродажи.Себестоимость = 0;
        РегПродажи.ПродСтоимость = 0;
        РегПродажи.Количество      = 0;
        //ДОБАВЛЕНО НЕТИПОВОЕ
    КонецЕсли;
    
    РегПродажи.ДвижениеВыполнить();
    
КонецПроцедуры //глДвижениеОборотовПродаж()
.
В типовой конфиге глДвижениеОборотовПродаж() вызывается в циклах, но в циклах в модуле проведения все время работает в "ЕСЛИ" только одна из веток.
Если в цикле (или последовательности вызовов) будет использование глДвижениеОборотовПродаж() так, что может работать и та и другая ветка "если" - то будет бяка...
1 Злопчинский
 
27.04.20
01:19
Вот еще нарыл интересное (для себя)
.
Регистр.ПартииНаличие, измерение "Партия(справочник)" и "ДатаПартии(дата)"
.
При проведении по партиям при возврате (в частности Документ.ВозвратОтПокупателя)
.
            Если (МетодРасчетаСебестоимости <> Перечисление.МетодыРасчетаСебестоимости.FIFO)
               и (МетодРасчетаСебестоимости <> Перечисление.МетодыРасчетаСебестоимости.LIFO)
               и (РегПартии.СтатусПартии <> глСП.Т_Принятый) Тогда
                РегПартии.Партия          = ПолучитьПустоеЗначение("Справочник.Партии");
                РегПартии.ДатаПартии    = "";
            Иначе
                РегПартии.Партия        = ТаблПартий.Партия;
                РегПартии.ДатаПартии        = ТекДок.ДатаДок; // !!!вот здесь вот!!!
// !!! в принципе доступно ТаблПартий.ДатаДок

            КонецЕсли;
.
где ТаблПартий - найденные партии продажи, которые "возвращаются"
То есть при продаже партия ушла с "баланса" с ДатаПартии= 14.03.20
А при возврате партия становится на "баланс" в очередь фифо/лифо с ДатаПартии= 27.03.20
Далее при продажах очеред списания строится просто, это понятно
.
ТаблИтогов.Сортировать("-Фирма,"+ЗнакСортировки+"ДатаПартии,"+ЗнакСортировки+"ДокПартии",1);
.

Интересно, почему возвращаемую партию ставят в очередь фифо/лифо не "старой" датой, а датой возврата? Возвращенные партии (по партиеобразуещему документу) здесь будут списываться после (по фифо) партий с более молодыми партиеобразующими документами.

Получается что здесь "партия" как таковая определяется датой прохождения партии НА БАЛАНС (а это м.б. и поступление, и возврат). М.б. какой-то смысл в этом есть... Интересненько, надо подумать...
2 Злопчинский
 
27.04.20
01:21
Ошибочка - выше по тексту в комментарии
вместо "!!! в принципе доступно ТаблПартий.ДатаДок"
следует читать "!!! в принципе доступно ТаблПартий.ДатаПартии"
3 Arbuz
 
28.04.20
11:53
(0) у меня уже исправлено так же
(1) а если партия (все) закрылась? а если возврат по нескольким партиям? привязываться к партиям оснований возвратов?
4 Arbuz
 
28.04.20
11:57
(3)+ а если основание - чек ккм - не партеобразующий документ? дофига перепиливать... хотя отчёт ккм у меня уже перепилен изрядно.
5 Злопчинский
 
28.04.20
18:14
отчет ККМ и у меня перепилен изярядно
а по 91) не поняд - ну идет возврат по нескольким партиям и что? идет и идет...
6 Злопчинский
 
01.05.20
23:15
Вот еще нестыковочка.
Отчет.ВедомостьПоОстаткамТМЦ
приводит к "неадекватным" цифрам, если выключен вывод по складу - типа считают что это внутренние перемещения(ну путать к кодом операции в перемещении "внутреннее" или "внешнее" - это другое!)

        Пока Запрос.Группировка(Ном) = 1 Цикл
            
            Если НазваниеГруппировки = "Документ" Тогда
                НазваниеСекции="Документ";              
                
                // Внутренние перемещения выводятся только в том случае, если установлена детализация или фильтр по складу
                Если (Запрос.Документ.Вид() = "ПеремещениеТМЦ") и (НомерГруппировкиПоСкладу = 9999) и (ВыбСклад.Выбран() = 0) Тогда //!!! вот здесь засада, условие неполное
                    Продолжить;
                КонецЕсли;                                        
.
должно быть
.
            Если НазваниеГруппировки = "Документ" Тогда
                НазваниеСекции="Документ";              
                
                // Внутренние перемещения выводятся только в том случае, если установлена детализация или фильтр по складу
                Если (Запрос.Документ.Вид() = "ПеремещениеТМЦ") и (НомерГруппировкиПоСкладу = 9999) и (ВыбСклад.Выбран() = 0) Тогда
                    //[*]progadmin, 01.05.2020, ДОБАВЛЕНО НЕТИПОВОЕ
                    //Продолжить;
                    //--------------------------------------------------------------------
                    //ошибка типового кода, не учтено что перемещение может быть
                    //между фирмами (которые относятся к одному юрлицу), тогда это не внутренее
                    //в типовом коде в таком случае ползет неадекватная краснота
                    Если Запрос.Документ.ФирмаПолучатель=Запрос.Документ.Фирма Тогда Продолжить; КонецЕсли;
                    //[*]_progadmin, 01.05.2020, ДОБАВЛЕНО НЕТИПОВОЕ
                КонецЕсли;
7 Злопчинский
 
01.05.20
23:17
забыл место: Процедура ВывестиГруппировку() ~ +25 строк от заголовка процедуры
8 Злопчинский
 
01.05.20
23:22
даже наверное правильнее так написать:
Если Запрос.Документ.ФирмаПолучатель=Запрос.Фирма Тогда Продолжить; КонецЕсли;

хотя т.к. это выводятся движения по документу-регистратору - то наверное не сильно принципиально...
9 Злопчинский
 
01.05.20
23:24
пост (8) - неверный, не считается.
.
писать пока так надо, как привел в первоим исправлении
Если Запрос.Документ.ФирмаПолучатель=Запрос.Документ.Фирма Тогда Продолжить; КонецЕсли;
10 Бертыш
 
02.05.20
09:43
Не думаю что будет актуально для моего клиента. Вы наверняка на девятке, а он так и висит на ТиС 8.7 с коей так и не переходил на девятку по причине некузявости с его точки зрения там методологии управленческого учета. Я ему обмен написал с бухией и всё, по моему так и висит последниих лет десять изредка обновляя  бухию
11 Злопчинский
 
02.05.20
09:54
(10) Спасибо, что обратили внимание на инфу! ;-) не зря хоть писал ;-)
а заради интереса - не просветишь что не так "с его точки зрения методологии упр.учета"?
гнасколько я помню (уж сильно давно это было) то там бух/упр были разделены тупо выбором признака в документе - бух/упр/оба, а на уровне регистров - просто проведением либо с заполненным значением реквизита "Фирма" (бух), либо с незаполненым (упр), либо две записи для "оба".
Что не понравилось в 9.2 именно для упручета? что не смог реализовать?
12 Бертыш
 
02.05.20
11:27
(11) Ну ему показалось что он не сможет проводить покупки и продажи левого товара как он делал в 8.7
13 Злопчинский
 
02.05.20
11:33
(12) ну.. так на коробке автомат не поедешь как на механике.. скоростей то переключать не надо. но это не мешает ехать.. ;-)
14 Злопчинский
 
02.05.20
11:33
(12) короче - можно.
15 Злопчинский
 
02.05.20
11:34
(12) спсб. что ответил
16 Asmody
 
02.05.20
12:00
Помните давеча кто-то на загнивающем специалистов по Коболу искал? Вот чем-то мне тот случай вас напоминает
17 Бертыш
 
02.05.20
12:34
(16) Дислексия на лицо.... Коболок, коболок я тебя съем :)
18 tgu82
 
02.05.20
16:28
(0) ДА праввильно подметил насчет глдвижение. Тоже наверное у себя поправлю если раньше не поправлял (давно дело было)
19 Злопчинский
 
02.05.20
19:34
(16) ну дык я ина асме и на пл/1 и на алгол-68 и на фортране, и даже на forex на бэсм-6 прогал. хрен ли нам коболы?
кто познал //GO SYSIN DD - тому наф! никакие коболы не страшны.
а вотлисп - это дело интерсеное. или forth
20 Бертыш
 
02.05.20
20:29
(19) Помнится излагал минимальный код для интерпретатора P-кода для x86 для tiny model

lea si, offset pCode
lodsw
jmp ax
ret

а остальное всё  детали реализуемые P-кодом, то есть его словами
21 Бертыш
 
02.05.20
20:30
+20 Это я к теме фортов и иже с ним
22 Злопчинский
 
02.05.20
20:46
(20) не, это для меня птичий язык, буквы только знакомые в слове jmp - остальное - "папа, это ты с кем разговаривал сейчас?"
я на ЕС ЭВМ , наших передраных на Ассемблере ибм 360/370
до сих пор помню мало-мало
коды краха: 0С1 (неверная коианда) и 0С4 (нарушение защиты памяти)
BR 14 - гото по адресу в регистре 14
BNE не равно
BE  равно
MVC - пересылка байт
LA и LR - тоже чтото с регистрами не помню уже.
эх блин. как хорошо-то было ;-)
если не работает - то сам виноват. не то что сейчас мегатаонны кода ас ис
23 Злопчинский
 
02.05.20
23:46
и сюда же еще, известная хрень..

в процедуре глСписаниеОстатковТМЦ() надо поправить места где проводится расчет свободного остатка (по складу и по фирме)

//исправляем недоработку типовой, иначе отрицательные резервы (когда бардак в базе)
//приведут к неадекватному завышению свободного остатка и ситуация развивается как лавина

//Если (ОстатокНаСкладе - РезервНаСкладе) < ТаблНоменклатуры.Количество Тогда
Если (ОстатокНаСкладе - МАКС(0,РезервНаСкладе)) < ТаблНоменклатуры.Количество Тогда

и

//Если (ОстатокПоФирме - РезервПоФирме) < ТаблНоменклатуры.Количество Тогда
Если (ОстатокПоФирме - МАКС(0,РезервПоФирме)) < ТаблНоменклатуры.Количество Тогда
24 Злопчинский
 
04.05.20
00:23
Еще, в штатной норм, но могут быть траблы при доработках в глПолучитьТаблицуДокумента, поэтому лучше поправить..
.
Документ.ПеремещениеТМЦ.МодульДокумента
.
            Если СкладПолучатель.РозничныйСклад = 0 Тогда
                Регистр.ПартииНаличие.ЦенаПрод = 0;  
            Иначе
                // Для определения продажной цены надо получить строку документа
                
                //[*]progadmin, 03.05.2020 ДОБАВЛЕНО НЕТИПОВОЕ    
                //ТаблицаДокумента.ПолучитьСтрокуПоНомеру(ТаблСписПартий.НомерСтрокиДокумента);
                //----------------------------------------------------------------------------
                //поиск всегда будет успешным, т.к. ТаблСписПартий - производное от ТаблицаДокумента
                поз = 0; ТаблицаДокумента.НайтиЗначение(ТаблСписПартий.НомерСтрокиДокумента,поз,"НомерСтрокиДокумента");
                ТаблицаДокумента.ПолучитьСтрокуПоНомеру(поз);
                //[*]_progadmin, 03.05.2020 ДОБАВЛЕНО НЕТИПОВОЕ
                
                Регистр.ПартииНаличие. ЦенаПрод            = ТаблицаДокумента.ЦенаПродПриход;
            КонецЕсли;
            
            Регистр.ПартииНаличие.ДвижениеПриходВыполнить();
        КонецЦикла;
    КонецЕсли;
    
    // оприходование
    СписокПараметров.Установить("Склад", СкладПолучатель);
    СписокПараметров.Установить("Фирма", ФирмаПолучатель);
    
    Если глПриходОстатковТМЦ(Контекст,ТаблицаДокумента,СписокПараметров)=0 Тогда
        Возврат;
    КонецЕсли;
                                      
КонецПроцедуры // ПереместитьНаСклад()
25 Злопчинский
 
12.05.20
18:57
26 Mikeware
 
12.05.20
20:35
(25) ты шо, еще не слез с клюшек?
27 ptiz
 
12.05.20
20:59
(0) Всплакнуть хочется, сравнивая эти "процедурки" с мегатоннами кода УТ 11.
28 Злопчинский
 
12.05.20
22:38
(27) а по сути - что изменилось-то?! ;-)
29 Злопчинский
 
12.05.20
22:38
(26) Не, не слез...
30 Mikeware
 
14.05.20
20:05
(28) тонны гамна добавились. тормоза добавились... интерфейс модный-молодежный...
31 vcv
 
14.05.20
20:18
(29) Отрываешься от коллектива. Все на 8ку, а ты отстаёшь. И компанию свою подводишь. Ну в каком доме престарелых она будет искать нового 1Сника, когда предыдуший отдаст душу богам Кобола Бессмертного?   :)
32 Злопчинский
 
14.05.20
21:16
(31) как бюджет выделят - так сразу. пока что с октября (надо было уже через неделю!!!) на УНФ перелазим. Номенклатуру перенес, шк перенес, цены перенес, чтото там еще, с 8-ком допилили расширением (в облаке УНФ) возможности с регистрацией документов качества. но сука бесят некоторые моментц шо капец.... есть много хорошего. и еще днет того что в ТИС было как штатное. Я тут в Тис ковыряю приглаживаю у одного лавочника. красота же. методически зашибись же сделано. некоторые вещи всплыли - ранее на них внимания не обращал, а сейчас понятна задумка кто разрабатываал типовую. даже несколько восхитился... а в тоннах 8-ки - что? тонны 8-ки?!
33 Злопчинский
 
14.05.20
21:19
(31) ..как бюджет выделят. я теперь последние года два-три - злобный. есть бюджет - делаю. нет бюджета - не делаю. разве только то что жизненно необходимо - тогда могу авансом работу дать немного и то по-минимум. а так - нет бюджета - нехай колотят руками. благо можно и объемы небольшие. а то как хорошо все - хрен хорошие деньги потому что ну как же такие деньги! а как плохо - ну так плохо же. ну их всех в п..у!
34 Злопчинский
 
14.05.20
21:20
Потом вся эта универсальность типовых - блин проще за час узкое наьросать что работает и понятно как и почему. чем в универсальном день разбираться.
35 greenpoint
 
15.05.20
13:21
(31) 7-ков кстати на удивление много осталось, нам резюме почти каждую неделю приходят. Найдут, если припрет
36 Злопчинский
 
10.06.20
01:29
В записульки:

* есть такая ВК admin1c.dll - всякие полезности.

* в т.ч. есть метод глАдмин1С.АктивныеПодключения() - возвращает список активных сеансов (с видом сеанса - база/пофигуратор/итд).

* Так вот, чтобы этот код исполнялся без проблем - сеанс1С/пользователь1С, в котором он исполняется, должен иметь права "Использование в качестве Ole Automation сервера = ДА". Иначе прога крэшится в рантайм-еррор.

Поэтому, наверное, для получения списка активных сеансов следует юзать Userdef.dll - которая имеет аналогичный метод ЮзерДеф.ПолучитьСписокПользователейТЗ(КаталогИБ()); - в котором, скорее всего, используется иной список получения снеансов через парсинг файла подключений...
37 Злопчинский
 
16.06.20
13:24
Вот еще наткнулся на особенность (?)
.
ТаблицаЗначений
.
Выгрузить(<?>,,,);
Синтаксис:
Выгрузить(<Знач>,<НачСтрока>,<КонСтрока>,<Колонки>)
Назначение:
Выгрузить соответствующие ячейки таблицы значений.
Параметры:
<Знач> - значение типа ''Таблица значений'' или ''Список значений'', в которое нужно выгрузить данные. Если переданное значение пустое, тогда система сама создаст объект типа ''Таблица значений''.
<НачСтрока> - необязательный параметр. Номер начальной строки, с которой надо начинать выгрузку. Значение по умолчанию 1.
<КонСтрока> - необязательный параметр. Номер последней строки, по которую надо выгружать. Если не указан, то до последней.
<Колонки> - необязательный параметр. Номера или идентификаторы колонок, которые надо выгружать. Если параметр не задан, то выгружаются все колонки.
.
Код
.
ТЗнабор = СоздатьОбъект("ТаблицаЗначений");
  ТЗнабор.НоваяКолонка("Номенклатура","Справочник.Номенклатура");
  ТЗнабор.НоваяКолонка("Количество","Число");
  ТЗразукомплектация = ""; ТЗнабор.Выгрузить(ТЗразукомплектация); //создадим ТЗ с копией структуры
.
ТипЗначенияСтр(ТЗразукомплектация) = "Строка" (внезапно?)
.
  ТЗразукомплектация = СоздатьОбъект("ТаблицаЗначений"); ТЗнабор.Выгрузить(ТЗразукомплектация); //создадим ТЗ с копией структуры
.
ТипЗначенияСтр(ТЗразукомплектация) = "ТаблицаЗначений" с копией структуры, то что хотелось...
38 Злопчинский
 
19.06.20
23:09
Занятно, не знал об этом (или забыл...?)
если набиваем типа
СпрК = СоздатьОбъект("Справочник.И-ВОТ-ТУТ-ЖМАКАЕМ-ШИФТ-2
- то вылазиет список видов сапроавочников... аналогично и сдокументами...
39 Gbpltw
 
20.06.20
12:29
а по 6.0 есть чо? ))
40 Ёпрст
 
20.06.20
12:33
(38) открой для себя еще Ctrl+1 /Ctrl+2 и Alt+2/Alt+2
А так же макросы к опенконфу
41 Злопчинский
 
20.06.20
14:02
(40) макросы к опенконфу - знаю, но не асилил писать...
42 Злопчинский
 
21.07.20
20:09
Еще, конечно, странно что в типовой ТИС при печати ТОРГ12 покупателю (и УПД скорее всего точно так же)
в качестве банковских реквизитов фирмы используется Фирма.ОсновнойСчет
как бы логично что в банковских реквизитах указывать тот счет, на который предполагается оплата...
но такой возможности в типовой нет. разве только тянуть банковский счет из документа-оснвоания ЗаявкаПокупателя если реализация на основе заявки...
43 victuan1
 
23.07.20
06:11
(38) У меня по Ctrl+пробел.